javascript - 从另一台计算机调用我的页面时,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();
解决方案
因此,您尝试从与您的应用程序实际来源不同的域中检索数据。您必须为您的服务页面指定允许这样做。
根据您构建/提供 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
推荐阅读
- c++ - 链接 C++ 程序时,是否可以用 C 标准库替换 C++ 标准库?
- cuda - 为什么这两个 GPU 内核有巨大的性能差异?
- search - solr geodist 查询限制
- javascript - 如何连接导航栏(
- flutter - 即使调整大小设置为 false,如果键盘出现,颤振小部件正在移动
- javascript - JavaScript 线性重复函数的 Python 等效项
- azure-storage - Oracle 云到 Azure 云存储
- php - 从 WooCommerce 结帐页面获取送货地址?
- django - AWS SQS 可以在带有 django-celery-results 后端的 Django 项目中使用吗?
- javascript - 如何在反应上渲染所有图像src