gpt4 book ai didi

apache - 我应该返回 501/505 HTTP 状态还是 400/404

转载 作者:可可西里 更新时间:2023-11-01 17:01:17 24 4
gpt4 key购买 nike

如果我有一个正在运行的 tomcat 服务器并向不存在的资源发出 GET 请求,我会期望响应状态为 404 not found。但是,如果我使用不受支持的方法(例如“nGET”)向同一个不存在的资源发出请求,那么我会收到状态为 501 的响应。这是否正确?我假设如果资源不存在,那么我会收到 404。

同样的问题也适用于 505,如果我使用不支持的协议(protocol)版本向不存在的资源发出请求,我应该期待 404 还是 505?

最佳答案

关于 400 类响应代码的 HTTP 1.1 规范: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4

10.4 Client Error 4xx

The 4xx class of status code is intended for cases in which the client seems to have erred...

还有第 500 类响应代码:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5

10.5 Server Error 5xx

Response status codes beginning with the digit "5" indicate cases in which the server is aware that it has erred or is incapable of performing the request

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

当我使用不受支持的方法请求缺少的资源时,尝试默认的 Apache 2.2 安装(没有 Tomcat)似乎以 501 Method Not Implemented 响应响应,更多地指向服务器问题 - 这似乎与 Apache 如何+Tomcat 的行为。

相反,再次向 Amazon CloudFront 端点发送缺少资源和不受支持的方法的请求会返回 400 Bad Request 响应,表明它更倾向于传达客户端错误。

归根结底,对于遇到不止一个问题的情况,您最好让客户同时解决这两个问题。只要您在只有一个问题时返回一个正确的响应代码,尝试以特定顺序解决多个问题就是一种品味问题。值得注意的是,400 类和 500 类定义都包含短语:

User agents SHOULD display any included entity to the user

您可以在您认为合适的响应正文中包含任何详细信息,这意味着在存在多个问题的情况下,您可以包含文本来描述请求中的所有问题。

关于apache - 我应该返回 501/505 HTTP 状态还是 400/404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33508235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com