Steam API-Zugriffskontrolle-Erlaube-Origin-Problem

Ein bisschen neu in der Webprogrammierung und ein bisschen verwirrt. Ich habe einen einfachen Express-Node.js-Webserver, der eine Website bedient. Ich möchte einer Funktion ein Gameid übergeben und es mithilfe der Web-API Leistungsinformationen von Steam abrufen lassen, die mithilfe des folgenden REST-API-Aufrufs unterstützt werden sollen:

https: //developer.valvesoftware.com/wiki/Steam_Web_API#GetGlobalAchievementPercentagesForApp_.28v0002.2

Ich habe eine Skriptdatei, die bereitgestellt wird. Ich versuche, eine Anforderung in einer clientseitigen Datei wie dieser auszuführen.

function GetSteamGameAchievements(appid)
{
   var request = new XMLHttpRequest();

    request.addEventListener('load',function(){

       console.log(JSON.stringify(this.responseText));

    });

    request.open("GET","http://api.steampowered.com/ISteamUserStats/GetGlobalAchievementPercentagesForApp/v0002/?gameid="+ appid + "&format=json",true);

    request.send(null);
}

Ich erhalte den folgenden Fehler

XMLHttpRequest kann nicht geladen werdenhttp: //api.steampowered.com/ISteamUserStats/GetGlobalAchievementPercentagesForApp/v0002/? gameid = 440 & format = json. In der angeforderten Ressource ist kein 'Access-Control-Allow-Origin'-Header vorhanden. Ursprung 'http: // localhost: 3000 'ist daher kein Zugriff erlaubt.

Ich habe etwas über den Fehler gelesen, aber es scheint serverseitige Codeänderungen oder ähnliches zu erfordern. Obwohl der gesamte serverseitige Code ungefähr so aussah:

// Add headers
app.use(function (req, res, next) {

  // Website you wish to allow to connect
  res.setHeader('Access-Control-Allow-Origin', 'http://api.steampowered.com');

  // Request methods you wish to allow
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');

  // Request headers you wish to allow
  res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');

  // Set to true if you need the website to include cookies in the requests sent
  // to the API (e.g. in case you use sessions)
  res.setHeader('Access-Control-Allow-Credentials', true);

  // Pass to next layer of middleware
  next();
});

Mit der Open Weather API, der einzigen anderen REST-API von Drittanbietern, die ich mit so etwas wie dem Originalcode bearbeitet habe, wäre alles in Ordnung, daher bin ich mir nicht sicher, warum die Steam-API nicht richtig funktioniert. Wenn ich Postman verwende, sind die von mir übermittelten Abfragezeichenfolgen in Ordnung, aber bei den Wertpapieren stimmt etwas nicht, wenn ich es in meinem clientseitigen Javascript mache ... aber nicht in der Open Weather API ... Ich bin mir nicht sicher, warum es bei einem funktioniert aber nicht der andere. Jede Hilfe wäre sehr dankbar. Ich habe einige ähnliche Themen durchgesehen, aber ich glaube, dass es mir durch meine Unverschämtheit schwer fällt, zu verstehen, wo ich falsch liege und wo genau das Problem behoben werden muss.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage