合适的HTTP状态代码

时间:2011-01-23 22:11:38

标签: http-status-code-404 http-status-codes

我的网络应用程序使用ajax,我通过php代码检查请求是否是ajax请求。如果没有,那么我生成404错误,否则运行与ajax函数关联的php代码。

如果用户或搜索蜘蛛试图访问ajax功能页面(例如:/ books / ajax / books_list),网络应用返回404找不到状态代码,我在Google网站管理员工具中看到了很多404错误。

我应该更改404状态代码,但哪一个适合这种情况?可以“406不接受”?

4 个答案:

答案 0 :(得分:1)

我认为403(Forbidden)可能最能描述它。资源就在那里,但您已确定您不会授予对该资源的访问权限,甚至对用户进行身份验证也无济于事。

答案 1 :(得分:0)

我建议你退回你建议的406。值得考虑的唯一选择是'501未实施'

The server does not support the functionality required to fulfill the request.
This is the appropriate response when the server does not recognize the request
method and is not capable of supporting it for any resource

和'403 Forbidden'

The server understood the request, but is refusing to fulfill it. 
Authorization will not help and the request SHOULD NOT be repeated. 
If the request method was not HEAD and the server wishes to make
public why the request has not been fulfilled, it SHOULD describe 
the reason for the refusal in the entity. If the server does not 
wish to make this information available to the client, the status
 code 404 (Not Found) can be used instead. 

答案 2 :(得分:0)

不确定如何确定它是否是正确的Ajax请求。如果你希望它是POST,但是蜘蛛使用GET,那么它应该是405(Method Not Allowed)。

您不应该使用406:它意味着“不可接受”,因为您不能支持浏览器发送的HTTP Accept:标头。这可能是不正确的(因为您可能根本没有检查Accept标头)。

如果你真的拒绝了请求,因为它来自未经授权的客户端,那么403是合适的。

答案 3 :(得分:0)

我的理解是,如果他们看到指示服务器问题的错误,那么SE蜘蛛会有点不安。 (406可以表示服务器实施不当。)404没有描述您正在寻找的内容,因为资源在那里,但是403(禁止)让蜘蛛知道这个页面不适合他们。您也可以使用robots.txt文件。