【HTTP】HTTP码的300段

来源:互联网 发布:起点听书软件 编辑:程序博客网 时间:2024/05/16 08:39
【是这样的】

本来在看http转https导致的性能问题,看到了外部转302和内部转307,然后300段只记得304是not modified(协商缓存)。于是去翻了下http指南……然而……302,303,307特么都是什么鬼TAT!

【于是我参考了RFC和前人的肩膀……】

三者的理(区)解(别)

  1. 302是http1.0时设定的。用于访问的资源被临时转移了,要重定向的时候使用(301是资源永久转移的时候使用)。跳转的时候,对于get,head等幂等的请求,直接返回301,在报文的location字段中指定要跳转的地址。但是对于post这样的非幂等的请求,要提示用户是否对新的地址重新post(因为环境可能改变了)。然而,大部分的浏览器都直接把这里的post请求转换成了get请求(这时候就不用请求用户许可了)。
  2. 由于http1.0中302的不规范性,在http1.1中对浏览器行为进行了修正,严格了浏览器的操作,于是有了303和307.
  3. 两者和302的不同在于,303相当于之前大部分浏览器的操作,对于post请求,直接转换成get请求了。307则是之前302的理想操作:对于post请求,询问是否向新的地址再次发送post请求(是否转向)
  4. 还有一个不是太要紧的……?302和307的请求按照服务器的要求考虑是否缓存,但是303的请求一定不能被缓存,但是重定向之后就没有这种强制要求啦。
【吐槽】

关于http权威指南……我相信一定不是书写得差……一定是翻译问题QUQ,简直不能看,刚看的时候一脸懵逼0 0……

然后其实我想放点RFC原文证明我也是认真看过文档的人(迷之微笑),然而貌似并没有什么好放出来的……

参考:

  1. http1.1的RFC
  2. 迷思巨人的肩膀
0 0