Problema de controle de acesso e permissão de origem da API do Steam
Um pouco novo para a programação da web e um pouco confuso sobre isso. Eu tenho um servidor node.js expresso básico servindo um site. Quero entregar um gameid a uma função e obter informações de conquista do steam usando sua API da Web que deve ser suportada usando a seguinte chamada de API REST:
Eu tenho um arquivo de script sendo exibido. Estou tentando fazer uma solicitação em um arquivo do lado do cliente como tal.
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);
}
Estou tendo o erro a seguir
XMLHttpRequest não pode carregarhttp://api.steampowered.com/ISteamUserStats/GetGlobalAchievementPercentagesForApp/v0002/?gameid=440&format=json. Nenhum cabeçalho 'Access-Control-Allow-Origin' está presente no recurso solicitado. Origemhttp: // localhost: 3000'não é, portanto, permitido o acesso.
Eu li um pouco sobre o erro, mas parece exigir alterações no código do servidor ou algo assim. Embora todo o código do lado do servidor tenha feito algo como:
// 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();
});
Usar a API do Open Weather, que é a única API REST de terceiros com a qual trabalhei com algo como o código original, seria bom, então não tenho certeza por que a API do Steam não está funcionando corretamente. Usando o Postman, as strings de consulta que estou enviando estão bem, mas há algo errado com os valores mobiliários quando faço isso no meu javascript do lado do cliente ... mas não na Open Weather API ... não sei por que funciona para um mas não o outro. Qualquer ajuda seria muito apreciada, eu revi alguns tópicos semelhantes, mas acho que meu noobishness está dificultando para mim entender onde estou errado e onde a correção precisa ser feita exatamente.