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


HTTP status code 202 or 303. When I need use it?

>我在Web应用程序中有PRIMARY URL,它接受POST请求一些数据。此网址将此数据发送到内部网址(用户无法访问)该内部 url 正在长时间处理该数据,例如 30 分钟。我的主网址在发布请求后必须重定向到网址。发布后,我必须在网址中发送什么响应 HTTP 状态代码标头?

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

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

10.2.3 202 接受

请求

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

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

wiki.apache.org CommonHTTPStatusCodes:

202 - 已接受 - 请求已被接受处理,但处理尚未完成。当客户端向 httpd 发送请求,但可以或不能保持足够长的持久连接以等待最终响应时使用。包含 202 状态代码的响应还应包含一个实体,该实体描述可以监视请求状态的位置或对何时可以满足请求的估计值。

此页面上也有一些信息。

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

我希望这能帮助你进入正确的方向

我会

说您的内部应用程序应该以202响应,并且面向用户的应用程序应该以302响应重定向。