我搜索了一个能够解决我的问题的答案,但没有一个主题符合我的情况......
我必须在我的应用程序中进行AJAX调用,它可以在所有桌面浏览器上运行,并且在某些移动浏览器上运行(例如在我的ASUS zenPhone本机浏览器上它可以正常工作,甚至在我的iPhone上工作(FF和Safari) ))但谷歌Chrome(移动)没办法,在这一次呼叫完成但响应它是空的(只有空,没有提供错误)...我问一些朋友也测试它和类似的结果发生(空响应)....我有一个https服务器和一个https端点
有我的代码:
<script>
var x = Math.floor((Math.random() * 10000000) + 2000);
var data = JSON.stringify({
"Token": x,
"Subject": "testAPI"
});
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
//console.log(this.responseText);
var dataJ = JSON.parse(this.responseText);
var dataA = dataJ.Questions;
alert(dataA[0].img);//this is already empty on my mobile :(
dataA.forEach(function(entry) {
//console.log(entry);
});
}
});
xhr.open("POST", url);
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
</script>
服务器端CORS已启用,正如我所说它在我测试的所有桌面上都完美无缺......我不知道我是否可以为你们提供网址(我必须要求@ API提供商)但是如果你给我一些提示,那就太好了......
非常感谢您的时间!
[编辑]
经过一些麻烦我得到一个错误(使用开发工具从我的手机远程测试到我的电脑)无法加载资源:net :: ERR_INSECURE_RESPONSE
在另一台设备上我没有收到此错误...
答案 0 :(得分:0)
这是一个很长的镜头,但是,尝试将内容类型标题设置为:
xhr.setRequestHeader("content-type", "text/plain");
这应该抑制由铬造成的CORS预检,导致空响应。