1

我正在尝试为内容暂时不可用但没有重定向的页面找到正确的 HTTP 状态代码,而是在页面上显示一条消息,通知用户内容暂时不可用。

307 Temporary Redirect不适用,因为没有重定向。

404 Not Found可能可能适用,但是我不确定这是否是在找到内容时给出的正确响应,只是不可用。

410 Gone不适用,因为内容将在未来某个时间再次可用。

其他代码似乎都不适用。有谁知道要使用的正确代码并可以解释原因?

4

2 回答 2

1

听起来4XX系列的反应在这里很合适。来自RFC

4xx 类状态码适用于客户端似乎出错的情况。除了响应 HEAD 请求时,服务器应该包含一个实体,其中包含对错误情况的解释,以及它是暂时的还是永久的情况。

考虑到这一点,我认为 403 禁止是最合适的:

10.4.4 403 禁止

服务器理解请求,但拒绝执行。授权将无济于事,并且不应重复请求。如果请求方法不是 HEAD 并且服务器希望公开请求未完成的原因,它应该在实体中描述拒绝的原因。如果服务器不希望向客户端提供此信息,则可以使用状态代码 404(未找到)来代替。

我建议这样做有三个原因:

  1. 这不是一个奇特的代码,所以它可以在浏览器中正常工作。对我来说,这是最重要的原因 - 您将能够提供一个页面来解释内容不可用的原因,并且您可以相当肯定它会正确显示。

  2. 服务器说“我了解您的请求,但此时我不会为您提供该内容”是合适的,这正是描述的前两行所说的。

  3. 它没有明确对任何机器人(或就此而言,人)说“忘记你曾经知道这个内容”。


为了完整起见,这就是我排除其他响应代码类别的原因:

2XX Success:此类状态码表示客户端的请求被成功接收、理解、接受。

  • 但是,在这种情况下,我们不接受请求。我不认为2XX是正确的。

3XX 重定向:此类状态码表示用户代理需要采取进一步的行动才能完成请求。

  • 我想你可以争辩说“进一步行动”的意​​思是“请等到内容可用后再试一次”,但是阅读其他 3XX 代码,“进一步行动”通常意味着“立即重定向”,正如你已经指出的那样出,不合适。

5XX服务器错误:以数字“5”开头的响应状态码表示服务器知道自己出错或无法执行请求的情况。

  • 服务器上没有任何问题,您只是不想现在提供内容。
于 2013-07-01T13:12:22.477 回答
0

HTTP 状态码204

即没有内容

在此处阅读更多信息:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

第 10.2.5 节

IE

The server successfully processed the request, but is not returning any content.

于 2013-07-01T13:12:43.690 回答