首先让我解释一下我是IT学生,我对CORS有疑问。
我必须调用另一个域上的远程服务,我得到了指定的header
和data
结构(见下文)。我已经实现了XMLHttpRequest
(参见下文),但是有一个错误无法修复(在谷歌搜索几天后):No 'Access-Control-Allow-Origin' header is present on the requested resource.
。
这是服务器端问题,还是我的标题中有错误?
提前致谢!
标题定义:
"header":
{"actionType" : "weather",
"alphabet": "latin",
"version": "9.43.2",
"unicodeHidden": "true"}
我的代码:
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://remote-site.net/service', true);
xhr.setRequestHeader('actionType', 'weather');
xhr.setRequestHeader('alphabet', 'latin');
xhr.setRequestHeader('version', '9.43.2');
xhr.setRequestHeader('unicodeHidden', "true");
xhr.onload = function () {
alert("OK");
};
xhr.onerror = function () {
alert("error");
};
xhr.send(dataToSend);
答案 0 :(得分:0)
您遇到的问题是因为远程服务器CORS策略不允许跨域请求。
远程服务器必须发送Access-Control-Allow-Origin: *
或其他Access-Control-Allow-Origin
标头以允许远程请求。
如果您无法更改其他域的代码,解决此问题的唯一方法是代理请求。这意味着您必须创建一个简单的PHP脚本,作为WebApp和远程服务器之间的中间人。
答案 1 :(得分:-1)
我已经为Chrome安装了POSTMAN插件并解决了我的问题。