为什么我的JSON状态在Chrome中返回0但在IE中它有效?

时间:2015-12-18 10:33:38

标签: javascript html json runtime-error riot-games-api

信息:

  • 我只是在玩Riot API并获得乐趣。
  • 我知道我不应该在前端做任何事情。

问题:

  • 我用来获取JSON的URL没有返回正确的状态。
  • 此URL应返回401,因为密钥不正确但返回0.

<!DOCTYPE html>
<html>
<body>
<h1>Meu Projeto</h1>

<button onclick="math()">Current Math</button>
<div id="teste"></div>
<div id="status"></div>
<div id="readystate"></div>
<script>
identificador = 0;

function math(){
  
var url = "https://br.api.pvp.net/observer-mode/rest/consumer/getSpectatorGameInfo/BR1/974721?api_key=5";
  
document.getElementById("teste").innerHTML = "URL: " + url;
var xmlhttp = new XMLHttpRequest();
  xmlhttp.open("GET", url, true);
  xmlhttp.send();
  xmlhttp.onreadystatechange = function () {

document.getElementById("status").innerHTML = "Status: " + xmlhttp.status;
document.getElementById("readystate").innerHTML = "ReadyState: " + xmlhttp.readyState;
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
  	  alert("OK");
    }
    if (xmlhttp.readyState == 4 && xmlhttp.status == 401) {
  	  alert("Unauthorized 401 but OK");
    }
    if (xmlhttp.readyState == 4 && xmlhttp.status == 404) {
  	  alert("Erro 404 but OK");
    }
    if (xmlhttp.readyState == 4 && xmlhttp.status == 0) {
  	  alert("status 0 ?");
    }
  }
}

</script>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

未为该端点设置CORS标头,特别是“Access-Control-Allow-Origin”标头。因此它无法访问/限制。

Riot Games API中的所有端点通常设置这些标题,但当前游戏和特色游戏端点除外。解决此问题的最简单方法是在服务器端进行请求,如果您想要发布应用程序,则必须执行此操作。