【问题标题】:No 'Access-Control-Allow-Origin' header is present on the requested resource请求的资源上不存在“Access-Control-Allow-Origin”标头
【发布时间】: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


【解决方案1】:

问题是发出了请求,但是在设置Access-Control-Allow-Origin 标头之前,由于某些错误(可能是PHP)脚本的执行失败。

【讨论】:

    猜你喜欢
    • 2014-07-28
    • 2014-01-19
    • 2013-12-07
    相关资源
    最近更新 更多