2015-11-03 98 views
1

如果我有一个tomcat服务器正在运行并向不存在的资源发出GET请求,我预计会发现404的响应状态未找到。但是,如果我使用不支持的方法(如“nGET”)向同一个非现有资源发出请求,那么我会得到状态为501的响应。这是正确的吗?我会假设,如果资源不存在,那么我会得到一个404我应该返回501/505 HTTP状态还是400/404

同样的问题也适用于505,如果我到Tomcat的请求与不支持的协议版本不存在的资源我应该期待404或505?

+0

哪个代码先例,它在规范中提到了哪些地方? – gmoney

回答

2

该HTTP 1.1规范在400类的效应初探代码: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4

10.4客户端错误的4xx

的4XX类的状态码被用于在该客户端似乎出现了偏差的情况下.. 。

同时,也是500类的响应代码:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5

10.5服务器错误5xx的

响应状态代码开头的数字“5”表示,其中服务器知道,它已经犯了错误或者是案件无法执行请求

一个状态没有提到它优先于另一个状态,它应该是什么是最重要的状态码给你传达。

尝试使用默认的Apache 2.2安装(没有Tomcat)似乎响应501方法未实现的响应,当我请求使用不支持的方法丢失的资源时,更多地指向服务器问题 - 这看起来类似于Apache + Tomcat的行为。

反过来,对Amazon CloudFront端点的请求再次丢失资源和不受支持的方法会返回400错误请求响应,这表明这更多地是传达客户端错误。

在一天结束时,如果您遇到多个问题,您最好让客户解决这两个问题。只要您返回一个正确的答复代码,以便在只有一个问题时尝试以特定顺序解决多个问题就是一个口味问题。

用户端应该显示任何包含实体用户

您可以在身体的任何详细信息:需要注意的是,400类和500类定义包括短语是非常有用的您认为合适的响应,在出现多个问题的情况下,意味着您可以包含文本来描述请求的所有问题。

1

我相信这两个500状态代码将优先于某种意义上的404未找到。我将501和505视为响应HTTP请求性质的服务器,然后尝试以任何有意义的方式解决请求。因为它实际上会在它试图找到请求的资源之前说“我没有回答该请求方法或HTTP版本”,所以我预计在收到404之前会发生这500个错误中的任何一个。

相关问题