首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >API网关端点在S3上从静态站点发帖时会出现CORS错误

API网关端点在S3上从静态站点发帖时会出现CORS错误
EN

Stack Overflow用户
提问于 2015-12-17 01:06:38
回答 9查看 23.8K关注 0票数 20

我已经用Serverless(serverless.com)创建了一个API端点,我通过API公开了这个端点。虽然我已经从

XMLHttpRequest无法加载https://xxxxxxxxx.execute-api.us-west-2.amazonaws.com/development/signup。请求的资源上没有“访问-控制-允许-原产地”标题。因此,“http://yyyyyyyyy.com.s3-website-us-east-1.amazonaws.com”源是不允许访问的。

当我使用邮递员发出请求时,我不会收到任何错误,尽管我已经设置了origin头。我怎样才能解决这个问题?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2015-12-17 20:31:15

我们现在有一个错误,对actual的失败请求将不包括适当的CORS头,这掩盖了请求上的实际错误。

我想补充一下Ken说的话,并确保您已经在控制台和部署版本中使用Postman或其他不是浏览器的客户端对API和资源进行了彻底的测试。我希望API本身有一个问题,您的CORS配置是正确的。

票数 14
EN

Stack Overflow用户

发布于 2015-12-30 17:57:22

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

我能够在失败请求时启用CORS头,方法是导出到swagger并手动编辑文件(刚刚复制了200个响应)并将其导入。

答复应如下:

代码语言:javascript
复制
  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__"

希望这能有所帮助。

票数 6
EN

Stack Overflow用户

发布于 2016-10-12 04:12:43

当“POST”到API时,我也在努力解决同样的问题。但我找到了解决问题的办法。

在为方法资源启用CORS之后,以及在添加必要的标头之后。‘访问-控制-允许-起源’= '*‘通配符,它仍然失败。

转到您正在调用的资源的选项,'GET','POST',etc..click该资源的“方法请求”窗格,设置API = FALSE,不要将API键设置为true。这将导致CORS错误。

原因是,选项在技术上不是一种方法,它是一个执行预飞请求的浏览器函数,因此在飞行前浏览器不知道要发送什么API密钥,只有在响应返回到‘Access-Control-Allow原产地’= '*‘的浏览器之后才知道,然后它将查找X-Api-Key =某个值的HTTP到setHeaders的代码。

注意: invoke方法本身、'POST‘等等。可以使用API Key = True,这是非常好的。

希望这能帮助那些像我这样挣扎了一段时间的人:)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34325009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档