我在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>
,但没有成功,过去有人遇到过并解决此问题吗?
答案 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,
},
});
问题。