阿毛
It's me !
想你所想

http重定向POST变GET

本文主要内容非原创!引用自文末「本文参考」项

问题

发现一个 POST 请求通过 301 重定向到新的请求,新的请求却变成了 GET,且请求报文清空了!

原因

不同类型的重定向映射可以划分为三个类别:

  • 永久重定向
  • 临时重定向
  • 特殊重定向

永久重定向

这种重定向操作是永久性的。它表示原 URL 不应再被使用,而选用新的 URL 替换它。搜索引擎机器人、RSS 阅读器以及其他爬虫将更新资源原始的 URL。

状态码状态文本处理方法典型应用场景
301Moved PermanentlyGET 方法不会发生变更。其他方法有可能会变更为 GET 方法。[1]网站重构。
308Permanent Redirect方法和消息主体都不发生变化。使用用于非 GET 链接/操作重组网站。

[1] 该规范无意使方法发生改变,但在实际应用中用户代理会更改其方法。308 状态码被创建用来消除在使用非 GET 方法时行为的歧义。

临时重定向

有时候请求的资源无法从其标准地址访问,但是却可以从另外的地方访问。在这种情况下,可以使用临时重定向。

搜索引擎和其他爬虫不会记录新的、临时的 URL。在创建、更新或者删除资源的时候,临时重定向也可以用于显示临时性的进度页面。

状态码状态文本处理方法典型应用场景
302FoundGET 方法不会发生变更。其他方法有可能会变更为 GET 方法。[2]由于不可预见的原因该页面暂不可用。
303See OtherGET 方法不会发生变更,其他方法会变更为 GET 方法(消息主体丢失)。用于 PUT 或 POST 请求完成之后重定向,来防止由于页面刷新导致的操作的重复触发。
307Temporary Redirect方法和消息主体都不发生变化。由于不可预见的原因该页面暂不可用。当站点支持非 GET 方法的链接或操作的时候,该状态码优于 302 状态码。

[2] 该规范无意使方法发生改变,但在实际应用中用户代理会改变其方法。307 状态码被创建用来消除在使用非 GET 方法时行为的歧义。

特殊重定向

304(Not Modified)会使页面跳转到本地的缓存副本中(可能已过时),而 300(Multiple Choice)则是一种手动重定向:将消息主体以 Web 页面形式呈现在浏览器中,列出了可能的重定向链接,用户可以从中进行选择。

状态码状态文本典型应用场景
300Multiple Choice不常用:所有的选项在消息主体的 HTML 页面中列出。鼓励在 Link 标头中加入机器可读的 rel=alternate
304Not Modified发送用于重新验证的条件请求。表示缓存的响应仍然是新的并且可以使用。

本文参考

humh

文章作者

站长本人,一个憨批!

发表回复

textsms
account_circle
email

想你所想

http重定向POST变GET
本文主要内容非原创!引用自文末「本文参考」项 问题 发现一个 POST 请求通过 301 重定向到新的请求,新的请求却变成了 GET,且请求报文清空了! 原因 不同类型的重定向映射…
扫描二维码继续阅读
2023-11-10