gpt4 book ai didi

javascript - Node.js 跨域缺少必需的请求 header 错误

转载 作者:太空宇宙 更新时间:2023-11-03 22:36:11 24 4
gpt4 key购买 nike

我正在使用基于 json 请求的 API,所有请求都在工作,只有一个请求。有问题的请求默认不允许跨域,但使用“Cors”就可以了。问题是,当我使用 cors 服务器使用 javascript 测试请求时,它可以工作,但是当我将它与 node.js 一起使用时,它就不行。

error: 'Missing required request header. Must specify one of: origin,x-requested-with'

无效的代码:

//Active Match
router.get('/activematchbyid/:server/:sid', function(req, res, next) {
var serverList = {br: 'BR1', na: 'NA1', eune: 'EUNE1', euw: 'EUW1', kr: 'KR1', lan: 'LAN1', las: 'LAS1', oce: 'OCE1', tr: 'TR1', ru: 'RU'};
var url = 'https://cors-anywhere.herokuapp.com/https://' + req.params.server + '.api.pvp.net/observer-mode/rest/consumer/getSpectatorGameInfo/' + serverList[req.params.server] + '/' + req.params.sid + '?api_key=' + apiKey;
console.log(url);
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
request(url, function(err, resp, body){
String.prototype.beginsWith = function (string) {
return(this.indexOf(string) === 0);
}
if (body.beginsWith('<html>') || body.beginsWith('Missing')){
res.send('error', 200);
}else{
console.log(body);
body = JSON.parse(body);
res.send(body);

};
});
});

这是有效的代码:

var serverList = {br: 'BR1', na: 'NA1', eune: 'EUNE1', euw: 'EUW1', kr: 'KR1', lan: 'LAN1', las: 'LAS1', oce: 'OCE1', tr: 'TR1', ru: 'RU'};
$.ajax({
url: 'https://cors-anywhere.herokuapp.com/https://' data.server + '.api.pvp.net/observer-mode/rest/consumer/getSpectatorGameInfo/' + serverList[data.server] + '/' + data.sid + '?api_key=' + apiKey;,
success: function(result){

//code stuff

}
});

我的网站向此网址发出请求:http://gankei-backend.herokuapp.com/activematchbyid/parameters-here

最佳答案

我找到了一个解决方案,只需添加此“res.header("Access-Control-Allow-Headers", "x-requested-with, x-requested-by");"到 header ,删除其他 header 并删除 URL 的 cors 服务器。现在工作正常。

工作代码:

//Active Match
router.get('/activematchbyid/:server/:sid', function(req, res, next) {
var serverList = {br: 'BR1', na: 'NA1', eune: 'EUNE1', euw: 'EUW1', kr: 'KR1', lan: 'LAN1', las: 'LAS1', oce: 'OCE1', tr: 'TR1', ru: 'RU'};
var url = 'https://' + req.params.server + '.api.pvp.net/observer-mode/rest/consumer/getSpectatorGameInfo/' + serverList[req.params.server] + '/' + req.params.sid + '?api_key=' + apiKey;
res.header("Access-Control-Allow-Headers", "x-requested-with, x-requested-by");
request(url, function(err, resp, body){
String.prototype.beginsWith = function (string) {
return(this.indexOf(string) === 0);
}
if (body.beginsWith('<html>') || body.beginsWith('Missing')){
res.send(resp.statusCode);
}else{
body = JSON.parse(body);
res.send(body);
};
});
});

关于javascript - Node.js 跨域缺少必需的请求 header 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28568370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com