zoukankan      html  css  js  c++  java
  • HTTP中的301、302、303、307、308

    结论

    • 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请求上。

    参考:

    https://www.cnblogs.com/wuguanglin/p/redirect.html

    https://zhuanlan.zhihu.com/p/60669395

  • 相关阅读:
    react ts axios 配置跨域
    npm run eject“Remove untracked files, stash or commit any changes, and try again.”错误
    java 进程的参数和list的线程安全
    帆软报表 大屏列表跑马灯效果JS
    帆软报表 快速复用数据集,避免重复劳动
    分析云 OA中部门分级思路和实现方法
    分析云 分段器 只显示一个块的数据
    分析云 更改服务默认的端口号
    分析云U8项目配置方法新版本(2)
    Oracle 创建时间维度表并更新是否工作日字段
  • 原文地址:https://www.cnblogs.com/amyzhu/p/11763438.html
Copyright © 2011-2022 走看看