4

遇到了似乎是同源策略的东西,这引起了相当的头痛!

切入正题,我实际上是在仅提供用户名时尝试获取用户的 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(同源策略)。

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

谢谢!

4

2 回答 2

5

正确的。遇到了同源策略:

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

而且看起来 Steam 不提供像 JSONP 这样的跨域解决方案。这意味着您又回到了旧的但可靠的解决方案:在您的服务器上获取数据,而不是在浏览器中。


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

于 2012-10-31T03:39:34.360 回答
1

您需要在 Heroku 中创建代理服务器才能获取数据。Cors 限制我们将数据直接调用到我们的浏览器,而不是服务器到服务器的交互。所以我们需要一个代理服务器来代表我们发送请求和接收数据。它对我有用。

提前致谢。

于 2020-12-07T07:29:10.473 回答