我在标准中找不到明确的规范。我有一个HTTP客户端在执行PUT请求时不包含Content-Length: 0
标头,我没有指定主体,服务器被这些请求搞糊涂了,我想知道我应该指责哪个程序
答案 0 :(得分:57)
如果HTTP请求具有Content-Length或Transfer-Encoding标头(RFC 2616 4.3),则它们具有正文。如果请求没有,则它没有正文,您的服务器应该这样处理它。
那说PUT请求没有身体是不寻常的,所以如果我设计一个真正想要发送空体的客户端,我会传递Content-Length:0。的确,取决于一个人的阅读对于POST和PUT方法的定义(RFC 2616 9.5, 9.6),有人可能会认为身体是隐含的 - 但是处理没有身体的合理方法是假设一个零长度的身体。
答案 1 :(得分:37)
没有回答这个问题,但断言jaxrs如何让我经常使用无体PUT:
无体放置示例: 授予用户额外的权限。
PUT / admin / users / {username} / permission / {permission}
答案 2 :(得分:5)
IETF标准不要求正文,但如果没有正文则内容长度应为0。使用适合您正在做的事情的方法。如果你把它放入代码,给定
int x;
int f(){ return x; }
和一个名为r
的远程变量。
帖子相当于
r=f();
看跌期权相当于
r=x;
和get相当于
x=r;
答案 3 :(得分:-1)
如果没有内容,PUT(在动词意义上)是什么? spec将内容称为“封闭实体”,但没有内容的请求将没有封闭实体,因此无需放在服务器上。
当然,除非你想在服务器上没有任何东西,否则你可能想要一个DELETE。
答案 4 :(得分:-4)
根据HTTP / 1.1标准http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
中的以下部分,需要内容长度字段