无法向Riot API发送ajax请求

时间:2019-11-29 00:57:43

标签: javascript ajax riot-games-api

      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  <title>Sample Page</title>
  <script>
      var summonername = "TraversTT"
      var api_key1= "******"
      var headers1 = {
          'Access-Control-Allow-Origin': '*',
          'Origin': "https://developer.riotgames.com",
          'Accept-Charset': "application/x-www-form-urlencoded; charset=UTF-8",
          'X-Riot-Token': "*****",
          'Accept-Language': "en-US,en;q=0.9",
          'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
      }
      var settings = {
       "async": true,
       "type": "POST",
       "url": "https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/"+summonername+"?api_key="+api_key1,
       "headers": headers1,
       "dataType": 'json',
       "data": 'dataTest',
     };
  $.ajax(settings).done(function (response) {
       console.log(response);
     });

我在连接到此API时经常遇到错误,并得到以下响应:

  

jquery.min.js:4拒绝设置不安全的标头“来源”      发送@ jquery.min.js:4      阿贾克斯@ jquery.min.js:4      (匿名)@ Riot dDragon访问sample2.html:26      jquery.min.js:4拒绝设置不安全的标头“ Accept-Charset”      发送@ jquery.min.js:4      阿贾克斯@ jquery.min.js:4      (匿名)@ Riot dDragon访问sample2.html:26      jquery.min.js:4拒绝设置不安全的标头“ User-Agent”      发送@ jquery.min.js:4      阿贾克斯@ jquery.min.js:4      (匿名)@ Riot dDragon访问sample2.html:26      2jquery.min.js:4个选项https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-     名称/ TraversTT?api_key = RGAPI-1ed86c58-2eee-4e6c-85d4-3bead97e4d3b 405(方法不是      允许)      发送@ jquery.min.js:4      阿贾克斯@ jquery.min.js:4      (匿名)@ Riot dDragon访问sample2.html:26      Riot dDragon访问sample2.html:1在以下位置访问XMLHttpRequest      'https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/TraversTT?      api_key =来自原点'null'的RGAPI-1ed86c58-2eee-4e6c-85d4-3bead97e4d3b'已被阻止      通过CORS策略:对预检请求的响应未通过访问控制检查:否      在请求的资源上显示“ Access-Control-Allow-Origin”标头。

今天,我一直在用不同的方式来做这个工作,大约6个小时,因此任何可用的帮助都将是惊人的。

1 个答案:

答案 0 :(得分:0)

根据api文档,您的代码应如下所示:

<script>
  var summonername = "TraversTT";
  var api_key1= "RGAPI-1ed86c58-2eee-4e6c-85d4-3bead97e4d3b";
  var headers1 = {
    'X-Riot-Token': "RGAPI-1ed86c58-2eee-4e6c-85d4-3bead97e4d3b",
  }
  var settings = {
    "async": true,
    "type": "GET",
    "url": "https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/"+summonername+"?api_key="+api_key1,
    "headers": headers1,
  };
  $.ajax(settings).done(function (response) {
    console.log(response);
  });
</script>

HTTP请求有多种类型; GET,POST,PUT等...您正在使用POST,但是该端点仅支持GET,并且您正在设置一些标头,通常是响应标头。

很遗憾,此端点上存在CORS问题,因此您的浏览器将无法通过浏览器访问它。

您可以在终端中尝试使用此cUrl来查看响应(将其复制并粘贴到您的终端中):

curl 'https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/TraversTT?api_key=RGAPI-1ed86c58-2eee-4e6c-85d4-3bead97e4d3b' -X OPTIONS -H 'Access-Control-Request-Method: GET' -H 'Origin: https://js-9vpefs.stackblitz.io' -H 'Referer: https://js-9vpefs.stackblitz.io/' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36' -H 'DNT: 1' -H 'Access-Control-Request-Headers: x-riot-token' --compressed

注意

我建议不要在公开论坛上发布您的API密钥('X-Riot-Token': "RGAPI-1ed86c58-2eee-4e6c-85d4-3bead97e4d3b")。