Chrome AWS API Gateway CORS控制台已启用,但仍在获取对未通过的预检请求的响应...无“Access-Control-Allow-Origin”标头

j2cgzkjk  于 2023-04-27  发布在  Go
关注(0)|答案(1)|浏览(135)

我从api网关创建了一个API,使用get和put方法,我已经从控制台启用了CORS并部署了api,然后生成了javascript SDK。在我的代码中,我尝试通过apigClient.js建立连接,但连接失败

var body = { };
    var params = {bucket: 'my-bucket-name', filename: 'my-image.jpg'};
    var additionalParams = {headers: {
    "Access-Control-Allow-Origin": "*",
    'content-Type':"application/json"
    }};

    apigClient.bucketFilenameGet(params, body , additionalParams).then(function(res){
        console.log("connection successful")
        showImages(res.data)
      }).catch(function(result){
          console.log("connection failed")
      });

这是我的方法响应,它通过lambda函数访问,不需要API键

lambda函数访问S3存储桶,这是存储桶CORS权限

我可以使用postman来执行GET和PUT请求,但是当我尝试从上面的代码启动API网关时,我一直在chrome上得到错误。

Access to XMLHttpRequest at 
'https://xxxxx.execute-api.us-east-1.amazonaws.com/prod/my-bucket-name/my-image.jpg' 
from origin 'http://127.0.0.1:5500' has been blocked by CORS policy: 
Response to preflight request doesn't pass access control check: 
No 'Access-Control-Allow-Origin' header is present on the requested resource.

我试图使用命令来禁用 chrome 的CORS和重新启动浏览器,但没有工作

open /Applications/Google\ Chrome.app --args --user-data-dir="/var/tmp/chrome-dev-disabled-security" --disable-web-security --disable-site-isolation-trials

不知道该怎么办。

myzjeezk

myzjeezk1#

错误消息中的“Preflight”指的是APIGW中的/OPTIONS方法。您能否确认Access-Control-Allow-Origin:*也添加到/OPTIONS方法的集成响应中?
此外,JS请求中不需要Access-Control-Allow-Origin
最后一个故障排除注意事项,如果APIGW遇到错误并返回4XX或5XX响应,您也可以获得印前检查错误。要解决此问题,请在APIGW中,在左侧菜单中找到网关响应,并将Access-Control-Allow-Origin:*添加到默认4XX和默认5XX。

相关问题