每当我开始在函数上使用AWS_IAM授权器时,我的API GET请求(即从Web客户端发出的请求)都会收到No 'Access-Control-Allow-Origin' header is present on the requested resource.
并得到403状态代码。当我删除aws_iam授权者时,通过同一Web客户端发出的API请求成功。因此,我非常确定这实际上不是CORS错误,因为我再次检查了我的API是否启用了cors。我不确定我是否使用了错误的AWS Javascript SDK,或者是否没有在serverless.yml配置中为AWS_IAM生成适当的角色。
当我使用来自AWS的个人访问密钥运行邮递员的请求时,请求成功。当我从AWS.config.credentials中进行console.log记录并在邮递员中使用这些键时,请求将收到无效的令牌错误消息。也许我没有为我的联合身份库生成适当的角色?
我在前端使用aws4签署请求,并使用axios进行请求。
有什么想法吗?
答案 0 :(得分:1)
Axios将发出飞行前请求。这是一种OPTIONS
类型,在发出GET
请求之前需要200个响应。它还需要返回CORS标头:
Access-Control-Allow-Origin: *
邮递员不会自动拨打相同的电话,但您可以使用它来测试该请求。确保您的API接受该路由的OPTIONS
请求方法,并返回带有CORS标头的空200响应,我认为您会很好。
AFAIK,OPTIONS
请求无需进行身份验证。只是给一个绿灯。可能是因为您的客户端在通过身份验证的OPTIONS请求时正在向此终结点进行调用,这增加了第二层混乱,或者您可能需要添加Access-Control-Allow-Headers
才能允许Authorisation
类型标头,如果AWS使用的是一个。
很难在不调试的情况下提供更多信息,但我将从一个OPTIONS
请求开始。