views:

155

answers:

1

I need to redirect the top frame on a form post and it should work irrespective of javascript and across all major browsers.

I can redirect to a page with a link and its target attribute set & and asking the users to click the link.

But would like to know whether I can do it in a 302 Response itself.

+3  A: 

No. A 302 (or 301, or 303) response only specifies that the browser has to look elsewhere for the requested document (as specified by the Location header). The concept of browser frames is completely outside the scope of HTTP.

However, browser frames are defined in HTML, and so is the target property on form elements:

<form action="/somescript?x=y" method="POST" target="_top">

This will make the form submit to the _top frame, which means "use the full browser window". This is supported across all modern (and most older, e.g. IE4) browsers and does not require JavaScript.

Piskvor
Thank you. But problem is, I need to pop out of frame on success conditions and remain inside the frame and on same page for error conditions.
Ramesh
Can't do that without JS - I'd post via AJAX in that case. If "no JS" is a hard, immovable requirement, then "cannot do that" is the answer. Could you go the JS way, and use your "click to redirect" link in a <noscript> tag?
Piskvor
I think, I will end up doing that. Thanks for the clarification.
Ramesh