【问题标题】:Error: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource错误:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头
【发布时间】:2017-10-11 05:24:12
【问题描述】:

我通过axios请求s3服务器,得到Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.另外,在此之前,我得到OPTIONS https://s3.ap-northeast-2.amazonaws.com/.../... 403 (Forbidden)

我应该在客户端解决这个问题。我在我的本地机器上托管我的文件。 我的请求代码如下。

axios({
  url: 'https://s3.ap-northeast-2.amazonaws.com/.../...',
  method: 'get',
  withCredentials: true,
  headers: {
    'Content-Type': 'image/jpeg',
    'Access-Control-Allow-Origin': 'http://*, https://*',
  }

})

我试过了

  1. start chrome --disable-web-security 使用 git
  2. 已安装 chrome 插件 - Allow-Control-Allow-Origin: *

没有任何效果...我该如何解决这个问题?

【问题讨论】:

  • 您必须在https://s3.ap-northeast-2.amazonaws.com/… 配置服务器以发送 Access-Control-Allow-Origin 标头。您有权访问该服务器来执行此操作吗?如果没有,那么您需要通过代理发出请求。有关详细信息,请参阅stackoverflow.com/questions/20035101/… 的答案。执行 start chrome --disable-web-security 或安装插件并不是问题的解决方案,因为它所做的所有事情都让您独自在本地解决它。它不会为您应用的用户解决此问题。

标签: amazon-s3 get xmlhttprequest axios


【解决方案1】:

Access-Control-Allow-Originresponse 标头,而不是 request 标头。您无法在本地解决此问题,因为这是另一端的问题。

您需要在您尝试访问的 S3 存储桶上启用和配置 CORS(跨源资源共享)。

http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

【讨论】:

    猜你喜欢
    • 2016-02-23
    • 2018-05-06
    • 1970-01-01
    • 2019-02-24
    • 2017-11-11
    • 2017-04-09
    • 2017-09-08
    • 2017-10-10
    • 2016-12-24
    相关资源
    最近更新 更多