当前位置:  开发笔记 > 编程语言 > 正文

功能重定向的HTTP状态

如何解决《功能重定向的HTTP状态》经验,为你挑选了1个好方法。

现在我们已经有了显示UI元素的网页,以及只处理表单提交的网页,然后重定向回UI页面.他们使用PHP的header()函数执行此操作:

header("Location: /other_page.php");

这会导致发送302 Found响应; 根据HTTP 1.1规范,302适用于"请求的资源暂时驻留在不同的URI下"的情况.[HTTP 1.1规范]

从功能上来说,这很好,但看起来这似乎是我们正在做的正确的状态代码.看起来303("See Other")在这里是合适的状态,所以我想知道是否有任何理由不使用它.我们必须更明确地使用header(),因为我们必须指定状态行而不仅仅是Location:字段.思考?



1> troelskn..:

您可以使用其中任何一种,但用于重定向后的正确状态代码为303.

混乱有一个历史性的解释.最初,302指定浏览器不得更改重定向请求的方法.这使得它不适合重定向后发布,您希望浏览器发出GET请求.但是,所有浏览器似乎都误解了规范并始终发出GET请求.为了消除歧义,HTTP/1.1指定了两个新代码:303和307.303基本上指定302的事实解释,而307指定302的原始规范.因此在实践中302和303是可互换的,并且在理论302和307是​​.

如果你真的关心兼容性,那么302比303更安全,因为HTTP/1.0代理可能不理解303,但所有现代浏览器都说HTTP/1.1,所以这不是一个真正的问题.我建议使用303,因为这是最正确的事情.

在旁注; 该Location字段应为完整的URL.在实践中它并不重要 - 浏览器是宽容的 - 但如果你关心规范,这是正确的事情.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有