我正在使用一个基于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
你好尝试使用这个apihttps://cors.now.sh/
$.ajaxPrefilter( function (options) {
if (options.crossDomain && jQuery.support.cors) {
var http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
options.url = http + '//cors.now.sh/' + options.url;
}
});
$.get(
'http://otomoto.pl/',
function (response) {
var $log = $( "#log" ),
html = $.parseHTML( response ),
title = $(html).find("title").text();
console.log(response);
$log.append( html );
title = $(document).find("title").text();
$("#log1").append(title);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="log1">
<h3>Content:</h3>
</div>
<div style="display:none" id="log">
</div>
我找到了一个解决方案,只是在标题中添加了这个“res.header(“访问控制允许标题”,“x-request-with,x-request-by”);”,删除了其他标题,并删除了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);
};
});
});
问题内容: 我是OSGI的新手,我试图找出解决以下错误的方法 org.osgi.framework.BundleException:包org.foo.serviceBundle中未解决的约束[253]:无法解决253.0:缺少要求[253.0]包;未解决。(&(package = org.slf4j)(版本> = 1.6.0)(!(版本> = 2.0.0))) 我使用了Maven原型来生成包,并在
问题内容: 我有一个简单的PHP脚本,正在尝试跨域CORS请求: 但是我仍然得到错误: 请求标头字段不允许 我有什么想念的吗? 问题答案: 不允许作为可接受的值,请参阅此处的Mozilla文档。 您应该发送可接受的标头(而不是如星号所示)而不是星号。
我在使用Google OAuth2进行身份验证时遇到困难。 我已经从google开发者控制台获得了客户端ID和密码,我得到了以下代码: 但我从谷歌得到这个错误: 错误:invalid_request 缺少必需的参数:client_id 了解更多 请求详细信息client _ id = redirect _ uri = http://127 . 0 . 0 . 1:8080/auth respons
问题内容: 将JSON数据从JSP传递到ResponseBody中的控制器时出错。 Ajax电话: 控制器: AppConfig.java @豆 请帮助我摆脱困境。我正在使用Spring 4,Jakson 2.3.0 如果我尝试POST请求,它将给出:org.springframework.web.HttpRequestMethodNotSupportedException:请求方法’POST’不
我正在使用谷歌应用程序引擎和谷歌数据存储。我正在使用谷歌图书馆 我的示例代码是: 我使用Spring靴和码头作为容器。 在本地,它工作正常,数据在谷歌数据存储中更新。 问题是当我部署应用程序到google-app-Engine,我得到下面的异常,当我得到datastore.put方法。 注意:在本地环境和google-app-Engine中,我定义了环境变量GOOGLE_APPLICATION_C
在浏览器的沙箱环境下,默认只允许js代码请求其所属域的数据,不同域名/ip/协议,都默认禁止. 跨域所需要的是,是响应浏览器发起的OPTIONS,及真正的GET/POST, 共2个请求哦. 所需要的逻辑CrossOriginFilter已经封装好了 如何解决 nutz给出的方案非常简单,仅需要在入口方法上添加CrossOriginFilter即可 @Filters(@By(type=CrossO