HTTP OPTIONS请求是否可以返回204或是否总是返回200?

根据http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.2,有关HTTP OPTIONS请求中提到的唯一响应是200.但是,似乎存在诸如content-length是0,204会更合适。 HTTP OPTIONS请求是否适合返回204?


是的,它可以返回204.或者400.或者400.对于方法返回的状态代码没有一般的限制。

另请注意,现在是时候停止查看RFC 2616.请参阅http://trac.tools.ietf.org/wg/httpbis/trac/wiki。


RFC 2616说:

200回应应该...

...

如果没有包含响应主体,响应必须包含一个字段值为“0”的内容长度字段。

这实际上并不清楚200是适用于整段还是只适用于第一句。 如果你想保证安全,你必须让MUST优先(并且不会花费太多)。

RFC 7231废除了RFC 2616,将措辞改为

生成OPTIONS的成功响应的服务器应该...

...

如果在响应中不发送有效负载体,服务器必须生成一个值为“0”的Content-Length字段。

这使得最后一句在一般意义上适用于2xx状态,并且必须胜诉。

所以,内容长度必须发送。 但是Content-Length不能用204:

RFC 2616表示它是这样的:

通过包含Content-Length或Transfer-Encoding标头字段来标示请求中消息体的存在......

...所有1xx(信息),204(无内容)和304(未修改)的回复不得包含消息主体。

RFC 7230也阐明了这一点:

服务器不得在任何状态码为1xx(信息性)或204(无内容)的响应中发送Content-Length标题字段。

无论如何,这就是我的理解。

链接地址: http://www.djcxy.com/p/45417.html

上一篇: Can an HTTP OPTIONS request return a 204 or should it always return 200?

下一篇: How to work around POST being changed to GET on 302 redirect?