我从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
不知道该怎么办。
1条答案
按热度按时间myzjeezk1#
错误消息中的“Preflight”指的是APIGW中的
/OPTIONS
方法。您能否确认Access-Control-Allow-Origin:*
也添加到/OPTIONS
方法的集成响应中?此外,JS请求中不需要
Access-Control-Allow-Origin
。最后一个故障排除注意事项,如果APIGW遇到错误并返回4XX或5XX响应,您也可以获得印前检查错误。要解决此问题,请在APIGW中,在左侧菜单中找到网关响应,并将
Access-Control-Allow-Origin:*
添加到默认4XX和默认5XX。