Steam API使用Javascript获取SteamID

时间:2012-10-31 03:32:41

标签: javascript jquery ajax steam

似乎遇到了同源政策,这引起了一些令人头疼的问题!

为了切入追逐,我基本上只是在提供用户名时尝试获取用户的steam64id。

例如,我的用户名:“Emperor_Jordan”我会去:

http://steamcommunity.com/id/emperor_jordan?xml=1

我需要的蒸汽就在顶部。所以我想我会使用JQuery Ajax来获取它并解析出我以后需要的id(steamapi用法需要steam64id),如下所示。以下是相关代码的片段:

$.ajax({
url: "http://steamcommunity.com/id/emperor_jordan/?xml=1",
datatype: "xml",
complete: function()
{
    alert(this.url)
},
success: parse
});

function parse(xml)
{
    alert("parsing");
    _steamID = $(xml).find("steamID64").text();
}

这里的问题是当我收到完成警报时,我从未看到“解析”。永远。它永远不会得到回调,这让我相信我遇到了SOP(相同的原始政策)。

我是以错误的方式接近这个,是否有解决方法?

谢谢!

2 个答案:

答案 0 :(得分:5)

正确。 You are running into the same-origin policy:

XMLHttpRequest cannot load http://steamcommunity.com/id/emperor_jordan/?xml=1. Origin http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin.

it looks like Steam does not offer a cross-origin solution like JSONP。这意味着您将回到旧但可靠的解决方案:获取服务器上的数据,而不是浏览器中的数据。


有关Steam Web API的一些相关反馈:https://developer.valvesoftware.com/wiki/Steam_Web_API/Feedback#API_Considerations_for_Web_Developers

答案 1 :(得分:1)

您需要在Heroku中创建代理服务器才能获取数据。 Cors限制我们直接向浏览器调用数据,而不是服务器与服务器之间的交互。因此,我们需要代理服务器来代表我们发送请求并接收数据。它对我有用。

谢谢。