我有一个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();
答案 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