首页 > 解决方案 > 从另一台计算机调用我的页面时,httprequest 不起作用

问题描述

我有一个 html 页面,该页面部署在xampp页面中,该页面有一个脚本标签,我XMLHttpRequest用来调用服务 url 来获取 json 数据。

这仅在我调用页面时有效 http://localhost/mypage

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

“<strong>请求的资源上没有 'Access-Control-Allow-Origin' 标头”</p>

我尝试使用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();

标签: javascriptxmlhttprequestcross-domain

解决方案


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

根据您构建/提供 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


推荐阅读