HTTP状态代码202或303.当我需要使用它时?

时间:2014-11-17 15:27:07

标签: php http-headers http-status-codes

我在Web应用程序中有 PRIMARY url,它通过POST请求接受一些数据。 此网址将此数据发送到 内部 网址(用户无法访问) INTERNAL url长时间处理该数据,例如30分钟。 发布请求后,我的 PRIMARY 网址必须重定向到 MAIN 网址。发布后,我必须在 PRIMARY 网址中发送什么回复HTTP STATUS CODE标头?

202 ? - 是的,也许,因为它意味着“请求已被接受处理,但处理尚未完成。” 但我必须重定向回用户..重定向使用“3xx”HTTP状态代码。那么“ 303 ”还是没有?

2 个答案:

答案 0 :(得分:2)

也许reding rfc2616-sec10会帮助你,他们会对状态代码202说以下内容:

  

10.2.3 202接受

请求已被接受处理,但处理尚未完成。该请求最终可能会或可能不会被执行,因为在实际处理时可能不允许该请求。没有从异步操作中重新发送状态代码的工具。

202回复是故意不承诺的。其目的是允许服务器接受对某些其他进程的请求(可能是每天只运行一次的面向批处理的进程),而不要求用户代理与服务器的连接持续到进程完成为止。返回此响应的实体应该包括请求的当前状态的指示,以及指向状态监视器的指针或用户可以期望满足请求的某些估计。

wiki.apache.org CommonHTTPStatusCodes

  

202 - 已接受 - 已接受请求进行处理,但处理尚未完成。这在客户端向httpd发送请求时使用,但是可以或者不能维持持久连接足够长时间以等待最终响应。包含202状态代码的响应还应包含一个实体,该实体描述可以监视请求状态的位置,或者可以预期何时满足请求的某些估计。

this page还有一些信息。

如果页面上有活动(您的用户访问过的页面),并且您不打算通过重定向将其发送到其他位置,因为页面内容尚未移动,请不要使用3xx状态代码。如果在旅游网站上完成这项工作需要很长时间,您可能需要让访问者等待任务,并通过临时等待消息或进度条让他们知道..

我希望这会帮助你走向正确的方向

答案 1 :(得分:1)

我会说您的内部应用程序应该使用202回复,并且您的面向用户的应用程序应该使用302进行回复以重定向。