XMLHttpRequest无法加载文件:

时间:2016-01-09 12:17:14

标签: javascript php jquery

我有问题从api接收数据与所有其他链接没关系但是那个很难..所以这里是代码

$.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代码。

    <?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);
?>

在控制台上显示日志---&gt; 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错误

3 个答案:

答案 0 :(得分:2)

替换

header("Content-Type: text/javascript; charset=utf-8")

header("Content-Type: text/javascript; charset=utf-8");
//....................................................^You miss this ';'

答案 1 :(得分:2)

看起来错误在proxy.php文件中,它不能使用file_get_contents,因为url返回404。

和php回应

<br />
<b>Warning</b>:  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 <b>C:\xampp\htdocs\test\proxy.php</b> on line <b>8</b><br />

当javascript尝试读取响应时,它失败了。

也许这个网址错了? https://euw.api.pvp.net/observer-mode/rest/consumer/getSpectatorGameInfo/EUW1/19496550?api_keyxxx修改

删除

headers:{"Access-Control-Allow-Origin:": "*",
        'Access-Control-Allow-Headers':"X-Requested-With",},
crossDomain: true,

并更改

dataType:"jsonp",

dataType:"json",

仅在javascript中需要跨域请求,当您从具有Php的URL请求数据时,不需要此规则

<强> EDIT2 这个问题直接点击加载html文件,因此它给出了交叉原始策略的错误。 通过xamp

的地址修复

答案 2 :(得分:-1)

您的标题行是

header("Content-Type: text/javascript; charset=utf-8")

我的标题行是

header("Content-Type: text/javascript; charset=utf-8");