【问题标题】:XMLHttpRequest cannot load file: [duplicate]XMLHttpRequest 无法加载文件:[重复]
【发布时间】:2016-04-14 02:21:28
【问题描述】:

我在通过所有其他链接从 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);
?>

控制台日志显示--->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 返回什么?我的猜测是,那里有某种 html 错误消息。

标签: javascript php jquery


【解决方案1】:

看起来错误在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 修复文件

【讨论】:

  • 秒我会提供新的网址
  • donenew url 同样的错误
  • proxy.php 和 ajax 文件在同一个域中?如果是,那么您应该将 dataType:"jsonp" 更改为 dataType:"json",并删除 headers:{"Access-Control-Allow-Origin:": "*", 'Access-Control-Allow-Headers':" X-Requested-With",}, crossDomain: true,
  • @ BinaryGhost now i get this --->跨源请求仅支持协议方案:http、data、chrome、chrome-extension、https、chrome-extension-resource。
  • 是的,当您使用 php 请求数据时,您不需要跨域请求。现在可以用了吗?
【解决方案2】:

替换

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

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

【讨论】:

  • 仍然不是解决方案,而是 ty :D
  • @QQstuf 现在是什么错误?
  • 同理。错误是针对 php 文件中的第一个“
  • @QQstuf 我认为错误出现在您传递给 PHP 文件的 url 中...
  • 当前 url 可能被禁止或什么的..数据取决于具有此 id 的玩家是否在游戏中如果他有数据如果他没有有错误..。但我遇到的错误与此无关
【解决方案3】:

你的标题行是

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

我的标题行是

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

【讨论】:

    猜你喜欢
    • 2016-09-10
    • 1970-01-01
    • 2016-08-19
    • 2012-12-25
    • 2014-07-04
    • 2014-10-17
    • 2011-11-01
    • 1970-01-01
    相关资源
    最近更新 更多