Http协议是有状态码的,比较熟悉的状态码是200,代表链接OK,还有404和403,一个是not found,另一个是forbidden。Not found不用多说,可能是地址栏输入有误,或者是网页已经被移动。Forbidden的原因有很多,有可能是IP被服务器拉入黑名单,有可能是IP过分密集的访问该网站,被网站防火墙屏蔽,有可能是域名解析到了空间,但是空间没有绑定域名,也有可能是网页脚本文件在当前目录下没有执行权限。

上面说的都是2字头和4字头的状态码,但是比较关键的是3字头的状态码---301、302。

先写一个PHP,PHP的内容是指定使用301的方式,重定向到百度,然后在浏览器的地址栏上输入这个PHP的文件地址之后,就会蹦出百度的界面,查看其状态就是301,如图:

301的意思是“永久性重定向别的URL”,302的意思是“临时性的重定向”。使用302的方法的话,重复上面的实验,会看到状态码是302,而且回复头信息会多一个location: www.baidu.com,就是代表重定向的目的地是百度这个网址。

这里说的“永久重定向”和“临时重定向”并不是那种时间上的“永久和临时”,不是说采用了临时重定向,再关机或者重启之后,重定向的功能就消失了。比如使用搜索引擎搜索“网易”,需要在地址栏输入www.163.net,那么以后即使www.163.net的地址改变了,输入www.163.com服务器会自动链接到新地址www.wangyi.com,那么这时候使用301的话,就等于直接登陆www.wangyi.com,彻底忘记www.163.net的存在。如果是302的话,会先www.163.net,然后www.163.net的服务器返回信息给客户机,你真实需要去的是www.wangyi.com,然后客户机再去跟www.wangyi.com产生链接。

一般来说,最好使用301,这样更安全,而且省下了一步中间信息返回的步骤。

比如说有一个页面,是注册用户页面,需要输入账号、密码、手机号、电子邮箱和验证码这五个信息。在用户输入完以上的信息之后,页面会有一个跳转,提示“注册成功”或者“注册失败”,这个几秒钟的跳转也是重定向,如果成功了就会从这个短暂的界面重定向到正式登陆成功的界面,同时用户的数据就会被记录到后台的数据库里,保存到服务器里。

但是要知道,在PHP写法里使用301或者302的话,假设还是在上面的例子里,用户的信息在重定向的界面是没有被保存的,检查一下返回头信息会很轻松的发现,返回头信息开始的时候是POST,但是到了重定向的界面会变成GET。GET是获得,自然不会把信息存入数据库里,用户的信息录入等于白写。

举个例子:假设05.php是用户写注册信息的网页,用户填写完所有信息之后,系统重定向到06.php这个网页。如果这个重定向使用的是302 or 301,那么在06.php上,其实是没有任何的用户输入的信息的!如图:

302不用试了,把301抹去,默认就是302的方法,两个方法都是一样的效果,数据丢失。

这个时候怎么办?使用307,307就是在重定向中依旧保持原有的数据。

在上面的图里把301改成307,一切问题迎刃而解。而且可以看到,在05.php就是POST,在06.php里依旧还是POST。

Http协议之301,302和307相关推荐

  1. 详解重定向(HTTP状态码301/302/303/307/308)附案例

    关注 前端瓶子君,回复"交流" 加入我们一起学习,天天进步 今天打算好好把状态码301.302.303.307.308好好撸一遍,并会测试下一些例子. 状态码的解释 我们都知道重定 ...

  2. php 303,HTTP 的重定向301,302,303,307(转)

    301 永久重定向,告诉客户端以后应从新地址访问. 302 作为HTTP1.0的标准,以前叫做Moved Temporarily ,现在叫Found. 现在使用只是为了兼容性的处理,包括PHP的默认L ...

  3. http 301 302 303 307 308 傻傻分不清

    http的重定向我们经常是张口就来,"小明,在nginx上做一个重定向就行了".整个流程非常简单,服务端HTTP返回码是30x,头里面的Location字段代表新的URL.如下图所 ...

  4. 【HTTP】http重定向301/302/303/307

    一.概述 重定向常常和请求转发放在一起讨论(前者是两次不相关的请求,后者是一次请求服务器端转发),然而本文并不讨论两者的区别,而是HTTP 1.0规范和HTTP 1.1规范中关于重定向的区别,以及实际 ...

  5. http中的301、302、307、308有什么区别?

    原文来自https://www.cnblogs.com/wuguanglin/p/redirect.html 状态码的解释 301 Moved Permanently(永久移动) 被请求的资源已永久移 ...

  6. [html] http中的301、302、307、308有什么区别?

    [html] http中的301.302.307.308有什么区别? 301:永久移动302:发现307:临时重定向308:永久重定向 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, ...

  7. 301 302区别_302状态码代表什么,302状态码解决方法

    302是HTTP协议中的一个状态码(Status Code).可以简单的理解为该资源原本确实存在,但已经被临时改变了位置:换而言之,就是请求的资源暂时驻留在不同的URI下,故而除非特别指定了缓存头部指 ...

  8. ngnx 301 302跳转配置方法

    首先看一个完整代码示例,关于nginx 301 302跳转的. 301跳转设置: server { listen 80; server_name 123.com; rewrite ^/(.*) htt ...

  9. scrapy 解决Redirecting 301 302重定向问题

    在使用Scrapy框架中URl被重定向,总是遇到这类问题: DEBUG: Redirecting (301/302) to <GET https://XXXX refer https://XXX ...

最新文章

  1. centos 6.8 x86_64下autoconf版本升级到2.69
  2. python中异常的姓名
  3. android 自定义皮肤,Android Studio 自定义皮肤主题和背景
  4. Ckeditor插件
  5. 如何经营一家培训机构?
  6. php解析二级json,PHP Json 解析
  7. 地图的legend点击事件_手把手教你实现3D地图的定时高亮和点击事件
  8. 计算机电源高频干扰,在高频开关电源设计中怎样抑制电磁干扰?
  9. ssc335调试isp记录之色彩篇
  10. 工作英语: Meetings
  11. 大学英语(第四册)复习(原文及全文翻译)——Unit 3 - WHY DO WE BELIEVE THAT THE EARTH IS ROUND?(我们为什么相信地球是圆的?)
  12. SpringBoot+Vue项目在线学生请假管理系统
  13. 系统日志及数据库日志
  14. Kotlin 找素数/质数
  15. COLA异步任务重复执行?
  16. 全国执业兽医资格考试(兽医全科类)题库推荐
  17. Jsp的四大作用域与九大对象
  18. 详解Java的自动装箱与拆箱(Autoboxing and unboxing)
  19. 实战:从Python分析17-18赛季NBA胜率超70%球队数据开始…
  20. 小程序--语音合成tts 对接多平台(讯飞,思必驰,百度)

热门文章

  1. Ubuntu 文件系统成为只读模式的解决办法
  2. 计算机网络基础知识 - 应用层
  3. 安装tensorflow
  4. ubuntu系统安装时 MBR和GPT的区别
  5. 华师的入学计算机测试题,华师期末考试计算机练习题
  6. 【观察】让数字化转型之路越走越宽,DXC Technology释放新价值
  7. 苹果手机进水屏幕乱跳怎么办
  8. VMware 连接ISO镜像时,切换可移动设备时遇到错误: 对磁盘“ide1:0”执行的连接控制操作失败?
  9. 数据分析6_视频游戏销售分析_kaggle入门
  10. 大数据分析6个核心技术