当前位置: 移动技术网 > IT编程>网页制作>Html5 > HTTP中的301、302、303、307、308

HTTP中的301、302、303、307、308

2019年10月30日  | 移动技术网IT编程  | 我要评论

metcn毛明,第九个寡妇剧情,长剩将军

结论

  • 3xx开头的http状态码都表示重定向的响应。
  • 301、308是永久重定向;302、303、307是临时重定向。
  • 301、302是http 1.0的内容,303、307、308是http1.1的内容。
  • 301和302本来在规范中是不允许重定向时改变请求method的(将post改为get),实际许多浏览器实现的时候允许重定向时改变请求method。
  • 303的出现是允许重定向时改变请求method。此外303响应禁止被缓存。307、308则不允许重定向时改变请求method。

rfc 7231规定:

  • 301 moved permanently,永久重定向
  • 302 found
  • 303 see other
  • 307 temporary redirect

rfc 7538规定:

  • 308 permanent redirect 永久重定向

301、302搜索引擎处理区别

  • 301表示搜索引擎在抓去新内容的同时,将旧的网址替换为重定向之后的网址;
  • 302表示旧地址的资源仍存在,重定向时临时从a地址跳转到b地址,搜索引擎会抓取新的内容,并继续保存旧的网址。

临时重定向:302、303与307

结论

  • 302允许各种各样的重定向,一般都实现为get到get重定向,但是不能确保post会重定向为post。
  • 303只允许任意请求到get的重定向。
  • 307和302一样,但不允许post到get的重定向。

302 found

  • 302表示目标资源临时移动到了另一个uri上。由于重定向是临时发生的,所以客户端之后的请求中应该使用原本的uri。
  • 响应header的location会带上重定向的uri,浏览器可以使用location中的uri进行自动重定向
  • 注意:由于历史原因,用户代理可能会在重定向后的请求中把post方法改为get。如果不想这样做,应该响应307(temporary redirect)状态码。

303 see other

  • 303表示服务器要将浏览器重定向到另一个资源,这个资源的uri会写在响应header的location字段。事实上,重定向到的资源并不是请求的资源,而是对请求资源的一些描述。
  • 303 通常用于将post请求重定向到get请求。例如上传了一份个人信息,服务器返回303响应,将你导向一个上传成功页面。
  • 303 不管原请求是什么方法,重定向请求的都是get(或者head)
  • 303响应禁止被缓存。

307 temporary redirect

  • 307的定义实际上和302是一致的,唯一区别在于,307状态码不允许浏览器将原本post的请求重定向到get请求上。

永久重定向:301、308

301 moved permanently

  • 301表明目标资源被永久的移动到了一个新的uri,任何未来对这个资源的引用都应该使用新的uri。

308 permanent redirect

  • 308与301定义一致,唯一的区别在于,308状态码不允许浏览器将原本为post的请求重顶到get请求上。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网