XMLHttpRequest cannot load file:
我有问题从api接收数据与所有其他链接它没关系但是那个很难..所以这是代码
1 2 3 4 5 6 7 8 9 10 | $.ajax({ url: 'proxy.php?url=https://na.api.pvp.net/observer-mode/rest/consumer/getSpectatorGameInfo/NA1/26667724?api_key=xxxx', dataType:"json", success: function() { alert("Success"); }, error: function() { console.log("Error") } }); |
这是我正在使用的PHP代码。
1 2 3 4 5 6 7 8 9 | <?php header("Content-Type: text/javascript; charset=utf-8"); if (!isset($_GET['url'])) { die(); } $url = urldecode($_GET['url']); $url = 'https://' . str_replace('https://', '', $url); echo file_get_contents($url); ?> |
在控制台上显示日志---> XMLHttpRequest无法加载文件:/// D:/Install/xampp/htdocs/allInOne/proxy.php?url = https://na.api.pvp.n...pectatorGameInfo/NA1/26667724?API_KEY= XXX。 交叉源请求仅支持协议方案:http,data,chrome,chrome-extension,https,chrome-extension-resource.send @ jquery-1.11.3.js:9664jQuery.extend.ajax @jquery-1.11.3。 js:9215jQuery。(匿名函数)@jquery-1.11.3.js:9361jQuery.extend.getJSON @jquery-1.11.3.js:9344renderInfo @ render.js:89onclick @ index.html:15
render.js:85错误
看起来错误在proxy.php文件中,它不能使用file_get_contents,因为url返回404。
和PHP相呼应
1 2 3 | <br /> Warning: file_get_contents(https://euw.api.pvp.net/observer-mode/rest/consumer/getSpectatorGameInfo/EUW1/19496550?api_key=xxxx): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\test\proxy.php on line 8<br /> |
当javascript尝试读取响应时,它失败了。
也许这个网址错了?
https://euw.api.pvp.net/observer-mode/rest/consumer/getSpectatorGameInfo/EUW1/19496550?api_keyxxx
编辑
去掉
1 2 3 | headers:{"Access-Control-Allow-Origin:":"*", 'Access-Control-Allow-Headers':"X-Requested-With",}, crossDomain: true, |
并改变
1 | dataType:"jsonp", |
至
1 | dataType:"json", |
只有在javascript中才需要跨域请求,当您从具有Php的URL请求数据时,不需要此规则
EDIT2
这个问题直接点击加载html文件,因此它给出了交叉原始策略的错误。
通过地址修复来自xamp的文件
更换
1 | header("Content-Type: text/javascript; charset=utf-8") |
同
1 2 | header("Content-Type: text/javascript; charset=utf-8"); //....................................................^You miss this ';' |
你的标题行是
1 | header("Content-Type: text/javascript; charset=utf-8") |
我的标题行是
1 | header("Content-Type: text/javascript; charset=utf-8"); |