4

在我的 MVC 框架中,我有时会在提交表单后重定向。假设您将表单发布到 /example/input。

我想在 PHP 中添加正确的标头代码和解释性文本,例如header('HTTP/1.1 404 Not Found');

1)您的输入包含错误。您停留在 /example/input 页面并再次获取表单,标记有错误等。HTTP 1.1。代码和文本是否适合发送重定向指令?

2) 你的输入没问题,元素被保存,你被重定向Header('Location: ...')到/example/success。哪个 HTTP 1.1。代码和文本在这里合适吗?

3) PHP 代码由于配置错误、缺少包含文件、损坏的数据库连接或其他原因有时会引发错误。哪个 HTTP 1.1。代码和文本在这里合适吗?

我在这里查看了代码:http: //www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 200 号出现在 1) 中,而 301/302 号出现在 2) 中,500 号出现在3)。但在所有三种情况下,我发现上面链接代码后面的标题/解释并不完全符合我上面描述的场景。我应该选择其他代码/文本吗?

4

2 回答 2

5

案例 1 和 2 描述了相同情况的变体:您通过 POST 提交表单,服务器处理它并将客户端重定向到成功页面或返回表单。对于这两种情况,“303 See Other”都是正确的响应。这是在服务器正确处理 POST 请求后使用 GET 方法将客户端重定向到资源的正确方法。根据规范:

此方法的存在主要是为了允许 POST 激活脚本的输出将用户代理重定向到选定的资源。

对于案例 3,500 代码通常适用于最严重的错误。

于 2012-07-22T04:34:09.010 回答
1

据我了解,如果您的 PHP 成功执行,则 200 代码是正确的。所以这应该照顾1和2。

对于 3,如果发生致命错误,PHP 已经发送 500 代码。

再解释一下 2,300s 用于当资源不再位于请求的 URL 时。因此,您会将它们重定向到新的或正确的位置。在您的情况下,资源就在那里,因此您不需要 300 代码。

于 2012-07-22T04:07:22.183 回答