【发布时间】:2012-11-01 14:51:01
【问题描述】:
当尝试执行导致 400 Bad Request 错误的 http 请求时,nginx 服务器返回“400 Bad Request”、Content-Encoding: gzip 和非编码格式的响应。
因此,由于 Content-Encoding: gzip,我的代码使用 GZIPInputStream 包装了响应,这会引发错误。
我的问题是:当状态码不是“200 OK”时,gzip 是一个有效的编码吗?如果没有,我可以简单地检查状态码,如果返回的不是 200,我就不要尝试 gzip。
是否有这方面的规则/指南?这在任何地方都有记录吗?
TIA
【问题讨论】:
-
gzip 在任何响应码中都是有效的,但是无论如何你都可以只使用状态码进行判断(实际上我不知道为什么当状态码不是 200 时你需要内容)
-
这是一个供其他开发人员使用的代码库,因此我们应该尽可能多地返回他们的信息,包括导致错误的请求正文。
-
@ice "其实我不知道为什么当状态码不是 200 时你需要内容" - 因为 301, 302, 303: "实体响应应该包含一个简短的超文本注释,其中包含指向新 URI 的超链接。", 403: "如果 [...] 服务器希望公开请求未完成的原因, 它应该在实体中描述拒绝的原因”, ...
标签: http http-headers gzip http-error