cgi.header redirect

  • Thread starter Haris Bogdanovic
  • Start date
H

Haris Bogdanovic

Hi!

I tried to redirect a html page to itself to avoid browser's question about
resending post data but it doesn't work.
I tried this:

cgi=CGI.new
cgi.header('status'=>'302 moved', 'location'=>'my_page.rb')
or
cgi.header('status'=>'REDIRECT', 'location'=>'my_page.rb')

The browser still asks the question about post data when I click the Refresh
button

Maybe someone knows why this doesn't work ?

Thank you.
 
P

Peter Jones

Haris Bogdanovic said:
I tried to redirect a html page to itself to avoid browser's question about
resending post data but it doesn't work.
I tried this:

cgi=CGI.new
cgi.header('status'=>'302 moved', 'location'=>'my_page.rb')
or
cgi.header('status'=>'REDIRECT', 'location'=>'my_page.rb')

The browser still asks the question about post data when I click the Refresh
button

The browser is doing the right thing. It doesn't matter that the
result of a POST was a redirect (which is very common).

If you click the refresh button after a POST, the browser will want to
redo the POST. It of course asks if you want to POST the same data,
which is good (especially if you just posted your credit card number).

There are two ways around this, depending on what you are trying to
do. If you are just trying to refresh the page by hand without the
warning box, click in the location bar and press return.

If you want to refresh automatically, without the warning box, add a
meta refresh tag to the HTML.
 
K

Kai Krakow

The browser is doing the right thing. It doesn't matter that the
result of a POST was a redirect (which is very common).

If you click the refresh button after a POST, the browser will want to
redo the POST. It of course asks if you want to POST the same data,
which is good (especially if you just posted your credit card number).

There are two ways around this, depending on what you are trying to
do. If you are just trying to refresh the page by hand without the
warning box, click in the location bar and press return.

If you want to refresh automatically, without the warning box, add a
meta refresh tag to the HTML.

According to http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
you may want to try a 303 code... But unless request type is HEAD
(which it is probably not in your case) you should also reply with
some short HTML text.

Regards,
Kai
 
A

Albert Schlef

Haris said:
I tried this:

cgi=CGI.new
cgi.header('status'=>'302 moved', 'location'=>'my_page.rb')
or
cgi.header('status'=>'REDIRECT', 'location'=>'my_page.rb')

You need both a '302' line and a 'Location' header. (btw, according to
refs the url needs to be absolute.)
Maybe someone knows why this doesn't work ?

Why did you try 'REDIRECT'?

You simply guessed?

Then why didn't you guess 'Boozoonga'? or 'Kalibula'?

It's nice to invent things, but don't expect your browser to understand
you.

Peter said:
The browser is doing the right thing.

Yes, but Haris's is a very valid wish. The Drupal CMS redirects after a
form post, and I think it's indeed a good thing to do.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,756
Messages
2,569,540
Members
45,025
Latest member
KetoRushACVFitness

Latest Threads

Top