【发布时间】:2013-11-29 11:10:40
【问题描述】:
我有三个 ajax 调用(POST、GET 和 PUT),所有调用之前都有一个预检请求(OPTIONS)。 POST 调用创建一个用户,GET 调用读取用户,PUT 调用修改该用户。它们都是使用 .then() 的链式调用。所有请求都是跨域的,并且服务器已经实现了 CORS。所有请求都是从同一来源向同一服务器发出的(都向同一资源发出),但只有 PUT 请求会引发标题中的错误。后端修改头部的过滤器对于所有请求(POST、GET、PUT、DELETE)都是一样的,所以我真的不知道为什么请求被取消。此外,用于确认服务器允许 PUT 请求通过的预检请求没有问题,并返回有利的访问控制允许来源......
我还注意到 Chrome 取消了 PUT 请求(可能是因为来源不被允许)
希望你能帮助我:D
【问题讨论】:
-
Access-Control-Allow-Methods的标头设置是否也包含PUT? -
在黑暗中拍摄:响应没有 Access-Control-Allow-Origin 标头。查看代理报告的 PUT 请求的响应标头并将其发布在此处。
-
PUT 请求没有响应,因为它被 Chrome 取消了。 PUT 的预检请求确实有一个有利的 Acess-Control-Allow-Origin。
-
您的 PUT 响应还需要一个 Access-Control-Allow-Origin 标头。您的回复中显然遗漏了这一点。
-
不,Chrome 并没有取消请求,它可能只是这样显示。正如我所提到的,问题出在您的服务器代码中。
标签: ajax http http-headers cors put