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
我的serverless.yml
// in a useEffect
function getChallongeTournaments(){
return API.get("byoc_users", '/tournaments.json');
}
async function onLoaded() {
try {
const testChallonge = await getChallongeTournaments();
^ API调用
根据challonge文档,这应该是“检索用您的帐户创建的一组锦标赛”。有一个是被创造出来的。
这是我收到的CORS错误:从源'http://localhost:8100‘访问位于'https://m3heucf413.execute-api.us-east-2.amazonaws.com/prod/tournaments.json’的XMLHttpRequest已被CORS策略阻止:对印前检查请求的响应未通过访问控制检查:它没有HTTP ok状态。
发布于 2020-05-17 04:48:12
当存在从域/端口到整个新域/端口的请求时,浏览器将引发印前检查请求和CORS标志。如果您这样做是为了测试,您可以通过添加--disable-web-security
标志在chrome中禁用此安全标志。只需创建一个chrome到桌面的快捷方式>右键单击>属性>在快捷方式选项卡中-目标>附加--disable-web-security --user-data-dir="C:\tmpChromeSession"
到目标。这将禁用CORS检查。
如果您对第三方api服务器配置有访问/控制权限,那么您应该做的就是向响应中添加必要的响应头(Access-Control-Allow-Origin
)。如果您没有访问权限,一种选择是通过CORS代理来路由请求。
https://stackoverflow.com/questions/61846549
复制