当PUT空体时如何避免nginx 400

时间:2011-12-31 11:08:14

标签: ruby-on-rails rest nginx

当我尝试使用空体发送PUT请求时出现400错误。 似乎nginx认为它不是一个有效的请求。 有没有办法改变nginx设置或如何设置客户端以避免400错误

2 个答案:

答案 0 :(得分:0)

Nginx不支持分块请求,因此客户端代码必须指定正确的Content-Length标头。 Nginx在缺席的情况下返回411。

我不确定你为什么得到400.我的建议是至少将error_log级别设置为info并查看Nginx抱怨的内容。

答案 1 :(得分:0)

您的问题可能是因为您尝试将CRUD(创建,检索,更新和删除)语义与HTTP规范REST动词(GET,PUT,POST,DELETE,HEAD)关联,并使用以下不完整的映射:

  1. 创建= PUT
  2. Retrieve = GET
  3. 更新= POST
  4. 删除=删除
  5. 然而,“PUT”表示某些东西要“放”在服务器上,当有一个空体时,它是无效的,应该总是得到400响应。

    • Create = PUT(当且仅当您发送资源时) 需要创建内容)。

    • Create = POST(如果要向服务器发送命令) 使用服务器端资源创建内容)

    • 检索=获取。

    • 更新= PUT(当且仅当您发送资源时) 需要更新内容)

    • Update = POST(如果您要向服务器发送命令 使用服务器端资源更新内容)

    • 删除=删除。

    阅读Post vs PUT