当前位置:  开发笔记 > 编程语言 > 正文

从S3上的静态站点进行POST时,AWS API Gateway端点会出现CORS错误

如何解决《从S3上的静态站点进行POST时,AWSAPIGateway端点会出现CORS错误》经验,为你挑选了2个好方法。

我创建了一个带有Serverless(serverless.com)的API端点,我通过API Gateway公开了它.虽然我已经启用了CORS,但我收到了以下错误

XMLHttpRequest无法加载 https://xxxxxxxxx.execute-api.us-west-2.amazonaws.com/development/signup.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许访问来源' http://yyyyyyyy.com.s3-website-us-east-1.amazonaws.com '.

端点的AWS API Gateway设置

尽管我已经设置了origin标题,但是当我使用Postman发出请求时,我没有收到任何错误.我该如何解决这个问题?



1> Jack Kohn - ..:

我们现在有一个错误,其中对API网关的失败请求将不包含适当的CORS标头,这会掩盖请求中的实际错误.

我将添加Ken所说的内容,并确保您已经使用Postman或其他非浏览器的客户端彻底测试了控制台中的API和资源,以及部署的版本.我希望API本身存在问题,并且您的CORS配置是正确的.


我花了一个小时试图找出你的文档无法正常工作的原因,这实际上不是你文档的错,而是我之后没有部署API.你能考虑把它放在你的文件中:http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

2> Tiago Lopo..:

正如Jack Kohn所指出的,AWS控制台没有在非200响应上添加CORS标头,并且显然不允许您添加任何自定义标头.

通过导出到swagger并手动编辑文件(刚刚复制了200响应)并将其导回,我能够在失败的请求上启用CORS头.

答案应如下所示:

  responses:
    200:
      description: "200 response"
      schema:
        $ref: "#/definitions/Empty"
      headers:
        Access-Control-Allow-Origin:
          type: "string"
    401:
      description: "401 response"
      schema:
        $ref: "#/definitions/Empty"
      headers:
        Access-Control-Allow-Origin:
          type: "string"
  x-amazon-apigateway-integration:
    responses:
      default:
        statusCode: "200"
        responseParameters:
          method.response.header.Access-Control-Allow-Origin: "'*'"
        responseTemplates:
          application/json: "__passthrough__"
      Authentication Failed.*:
        statusCode: "401"
        responseParameters:
          method.response.header.Access-Control-Allow-Origin: "'*'"
        responseTemplates:
          application/json: "__passthrough__"

希望这可以帮助.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有