我创建了一个带有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 '.
尽管我已经设置了origin
标题,但是当我使用Postman发出请求时,我没有收到任何错误.我该如何解决这个问题?
我们现在有一个错误,其中对API网关的失败请求将不包含适当的CORS标头,这会掩盖请求中的实际错误.
我将添加Ken所说的内容,并确保您已经使用Postman或其他非浏览器的客户端彻底测试了控制台中的API和资源,以及部署的版本.我希望API本身存在问题,并且您的CORS配置是正确的.
正如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__"
希望这可以帮助.