利用http302临时重定向实现不可重入地址的后退
2008-09-03 17:11
295 查看
在网站开发中,我们不可避免的要使用post以提交数据,如表单提交,积分修改等,首先,我们需要明确的是:post在什么情况下是必须的:
涉及数据修改等不可重入地址的情况下,应是使用post的。
但是在ie等浏览器下,post数据后,用户点击后退,页面会回到一个提示用户已经过期的页面,用户再度刷新,数据又被post了一次,这就是不合理的了。
那么,我们用什么方法解决了,刚好,浏览器和http协议给我们提供了一个302,临时重定向的功能,我们就能够很好的避免用户后退过程中,再度刷新页面的问题了。
一个原理图如下:
以上是正确的程序走向,但是用户能看到的就只是1,3,4这三个页面,同时,因为你告诉浏览器了你用的是302,浏览器会认为2这个页面不存在,用户后退就只能从4到3到1,避免数据重复提交,同时也解决用户不能后退体验不好的问题。
看吧,浏览器给出响应是302
后退按钮是灰的,说明浏览器根本就不知道有http://localhost/study/header.php这个程序
其中这个程序应该在2中处理好post投过来的数据之后输出,如下
<?php
/*处理post的数据,出来结束后输出一下代码*/
header("Location: http://www.pcw.com.cn/");
exit;
?>
ok,明白了吧,没有明白给我qq:187349483,大家好好讨论啊
涉及数据修改等不可重入地址的情况下,应是使用post的。
但是在ie等浏览器下,post数据后,用户点击后退,页面会回到一个提示用户已经过期的页面,用户再度刷新,数据又被post了一次,这就是不合理的了。
那么,我们用什么方法解决了,刚好,浏览器和http协议给我们提供了一个302,临时重定向的功能,我们就能够很好的避免用户后退过程中,再度刷新页面的问题了。
一个原理图如下:
以上是正确的程序走向,但是用户能看到的就只是1,3,4这三个页面,同时,因为你告诉浏览器了你用的是302,浏览器会认为2这个页面不存在,用户后退就只能从4到3到1,避免数据重复提交,同时也解决用户不能后退体验不好的问题。
看吧,浏览器给出响应是302
后退按钮是灰的,说明浏览器根本就不知道有http://localhost/study/header.php这个程序
其中这个程序应该在2中处理好post投过来的数据之后输出,如下
<?php
/*处理post的数据,出来结束后输出一下代码*/
header("Location: http://www.pcw.com.cn/");
exit;
?>
ok,明白了吧,没有明白给我qq:187349483,大家好好讨论啊
相关文章推荐
- 利用nginx实现域名隐藏真实地址实现域名重定向
- .htaccess实现301网页永久重定向及302临时重定向
- 利用httpModules地址重定向的一个hello world
- nginx实现http协议301、302重定向
- 利用自定义IHttpModule来实现URL地址重写
- android---利用android-async-http开源项目实现网络图片查看器
- iis7下实现内网OWA重定向以及http重定向到https
- 不写代码开发信息管理系统-配置实现 下载地址:http://121.18.78.216
- HttpClient 4.1 post 继续访问 重定向,301,302 的url
- 【IOS】利用ASIHTTPRequest 实现一个简单的登陆验证
- asp.net 使用 httpModules 实现伪URL地址
- 如何通过HttpURLConnection得到http 302的跳转地址
- 转:ASP.NET 2.0利用Httphandler实现URL重写(伪URL及伪静态)
- 利用Jquery实现http长连接(LongPoll)
- nginx实现永久(301)/临时(302)跳转
- HTTP中302与301的区别以及在ASP.NET中如何实现
- IIS 7如何实现http重定向https
- Url地址重写,利用HttpHander手工编译页面并按需生成静态HTML文件
- Url地址重写,利用HttpHander手工编译页面并按需生成静态HTML文件
- 利用Django中的url方法实现地址动态拼接自动生成超链接地址