方法PATCH未在RFC 2068中定义,并且Servlet API不支持

时间:2015-11-11 12:00:20

标签: ruby-on-rails angularjs ruby-on-rails-4 nginx jetty

我不是100%确定错误的来源,但我认为它与我的nginx配置文件有关。我正在尝试使用restangular从我的Angularjs应用程序中获取PATCH请求,当我尝试在生产服务器上执行此操作时,我从控制台中的开发人员工具中收到以下错误

PATCH https://localhost:9000/api/v1/projects/12 501 (Method PATCH is not defined in RFC 2068 and is not supported by the Servlet API)

根据我到目前为止所读到的内容,nginx默认情况下不允许PATCH请求,这是真的,如果这是真的,你如何允许这种方法类型?

nginx的errors.log是空的,但在我的 access.log 中,我有以下内容,这告诉我nginx及其他东西没有出错?

0.0.0.10 - - [11/Nov/2015:09:09:16 +0000] "PATCH /api/v1/projects/12 HTTP/1.1" 501 0 "https://0.0.0.1/ss/projects" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36" "-"

任何人都可以确认这是否是nginx问题或其他什么,我可以尝试修复它。以下是我在nginx.conf文件中的location(s),如果您需要查看其他内容,请与我们联系:

location / {
  default_type text/plain;
  root /usr/share/nginx/html/ss/dist/;
  try_files $uri $uri/ /index.html;
}

location /api {
  client_max_body_size 1000m;
  proxy_set_header X-Forwarded-Host $host;
  proxy_set_header X-Forwarded-Server $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://127.0.0.1:8080/api;
  proxy_read_timeout 360s;
}

1 个答案:

答案 0 :(得分:0)

事实证明Jetty不接受PATCH HTTP方法导致问题 - Jetty Docs