请求的资源API网关上不存在“ Access-Control-Allow-Origin”标头

时间:2020-05-12 23:48:25

标签: javascript amazon-web-services amazon-s3 cors

我在AWS中设置了一个连接到lambda函数的API网关,并且我有一个S3网站正在尝试调用API网关公开的端点,因此S3网站已启用CORS,但是当我尝试点击任何端点我都收到此错误:

Access to XMLHttpRequest at 'https://myapi.amazonaws.com/' from origin 'http://mywebsite.region.amazonaws.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我已经在S3网站中设置了权限和相关信息,但似乎无法正常工作,这是我的配置:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>http://mywebsite.region.amazonaws.com</AllowedOrigin>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <MaxAgeSeconds>30000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

我也尝试了<AllowedOrigin>*</AllowedOrigin>,但没有成功,过去有人遇到过并解决此问题吗?

1 个答案:

答案 0 :(得分:-1)

因此,在进行了深入研究之后,我遵循this指南在我的API网关中启用cors,并且现在正在工作,而且我不得不更改方法与lambda函数之间的集成,我正在使用lambda代理集成并且看起来该配置带来了问题(这里没有经验),但是现在工作正常,谢谢大家的评论!

更新

当我尝试这里发布的第一个解决方案时遇到了另一个问题,然后回到Proxy Integration Lambda继续进行研究,我不得不对lambda函数进行更多更改以暴露{{ 1}}

这是现在的样子:

GraphQL Server

通过该配置,我的服务器可以正常工作,而没有任何const server = new ApolloServer({ typeDefs, resolvers, playground: { endpoint: "/api/graphql" }, context: ({ event, context }) => ({ headers: event.headers, functionName: context.functionName, event, context, }), }); exports.graphqlHandler = server.createHandler({ cors: { origin: '*', credentials: true, }, }); 问题。