我正在尝试调用第三方 api,但它给了我一个 CORS 错误


const https = require('https');
export async function main(event, callback) {
const options = {
method: 'GET',
host: 'https://api.challonge.com/v1/',
headers: {
'Access-Control-Allow-Methods': 'GET',
"api_key": "THE_KEY",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Credentials": true
}
};
var dataString = " ";
const response = await new Promise((resolve, reject) => {
const req = https.get(options, function (response) {
response.on('data', chunk => {
dataString += chunk;
});
response.on('end', () => {
resolve({
statusCode: 200,
headers: {
"Access-Control-Allow-Origin": "*"
},
body: JSON.stringify((dataString))
});
});
});
req.on('error', (e) => {
reject({
statusCode: 500,
headers: {
"Access-Control-Allow-Origin": "*"
},
body: e.message
});
});
});
return response;
};

这是 lambda 函数 ^

getChallongeTournaments:
handler: getChallongeTournaments.main
events:
- http:
path: tournaments/
method: get
cors: true
authorizer: aws_iam

我的无服务器.yml

// in a useEffect
function getChallongeTournaments(){
return API.get("byoc_users", '/tournaments.json');
}
async function onLoaded() {
try {
const testChallonge = await getChallongeTournaments();

^ API 调用

根据查隆格文档,这应该会收到"检索使用您的帐户创建的一组锦标赛",并且创建了一个。

这是我收到的 CORS 错误:从源"http://localhost:8100"访问"https://m3heucf413.execute-api.us-east-2.amazonaws.com/prod/tournaments.json"处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP 正常状态。

当有来自域/端口到整个新域/端口的请求时,浏览器会引发印前检查请求和 CORS 标志。如果您这样做是为了进行测试,则可以通过添加--disable-web-security标志在 chrome 中禁用此安全标志。只需创建 chrome 到桌面的快捷方式>右键单击>属性>在快捷方式选项卡中 - 目标>将--disable-web-security --user-data-dir="C:tmpChromeSession"附加到目标。这将禁用 CORS 检查。

如果您可以访问/控制第三方 api 服务器配置,您应该做的是在响应中添加必要的响应标头 (Access-Control-Allow-Origin(。如果您没有访问权限,一种选择是通过 CORS 代理路由请求。

相关内容

  • 没有找到相关文章

最新更新