从另一台计算机调用我的页面时,httprequest不起作用

时间:2018-06-23 21:26:50

标签: javascript xmlhttprequest cross-domain

我有一个HTML页面,该页面部署在xampp页面中,该页面具有一个脚本标签,我在其中使用XMLHttpRequest来调用服务网址以获取json数据。

仅当我使用http://localhost/mypage

调用页面时,此方法才有效

但是当我从另一台计算机http://ipadress/mypage调用同一页面时,会引发错误。

  

所请求的标题上没有'Access-Control-Allow-Origin'标头   资源

我尝试使用JSONP解决方案,但这也不起作用

请注意,我只能操作客户端代码(javascript),我无法控制正在调用的服务

为什么它可以与localhost一起使用,但不能与ipadress一起使用?

还有什么替代解决方案?

var xhttp = new XMLHttpRequest();

xhttp.onreadystatechange = function() {

  if (this.readyState == 4 && this.status == 200) {
  
    var result = JSON.parse(this.responseText).result;
    document.getElementById("data").innerHTML = result + "%";
    
  }
};
var url = "www.url.com";
xhttp.open("GET", url + "/data.json", true);
xhttp.setRequestHeader("content-type", "application/json");
xhttp.send();

1 个答案:

答案 0 :(得分:1)

因此,您尝试从与应用程序实际来源不同的域中检索数据。您必须为您的投放页面指定允许这样做的页面。

取决于您如何构建/服务html页面/内容(json),这是不同的。
通常,这是通过在响应发送回客户端之前在标头中进行设置来实现的。
使用PHP:header('Access-Control-Allow-Origin: *');
使用apache .htaccess文件(用于更多文件,例如:如果不使用服务器端脚本):Header set Access-Control-Allow-Origin "*"

最好不要指定*,但应指定应用程序可以访问的来源。

进一步阅读: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS