Ajax在Google Chrome Mobile

时间:2017-01-15 17:10:20

标签: javascript ajax google-chrome xmlhttprequest cors

我搜索了一个能够解决我的问题的答案,但没有一个主题符合我的情况......

我必须在我的应用程序中进行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

在另一台设备上我没有收到此错误...

1 个答案:

答案 0 :(得分:0)

这是一个很长的镜头,但是,尝试将内容类型标题设置为:

xhr.setRequestHeader("content-type", "text/plain");

这应该抑制由铬造成的CORS预检,导致空响应。