我正在尝试创建一个使用Steam网络api的网络应用程序,总体而言我对如何启动此应用程序感到非常困惑。This问题基本上概述了我的问题,而我不知道如何创建端点并解决这个问题。
目前我的Web服务器有Apache Tomcat,我在Notepad ++中编写了所有html / css / javascript代码。我不想使用jQuery,因为我不知道我是否需要。现在,我想做的只是从steam的apis中获取数据。
例如,使用此api:
http://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&steamid=76561197960435530&relationship=friend
我只想抓住用户的朋友列表。问题是,正如我上面提到的问题,我无法从我自己的网站调用steam apis,而且我不知道如何在我的服务器上创建端点并解决这个问题。
非常感谢任何帮助。我对这一切都很陌生,而且它绝对令人困惑。
答案 0 :(得分:1)
您可以使用mod_proxy将服务器的请求代理到Steam网站。首先需要在Apache中启用重写和mod代理
a2enmod rewrite
a2enmod proxy
apache2ctl reload
我们假设您的网站为www.example.com
,并且您的服务器上的网络根目录为/var/www
。创建目录/var/www/steamapi
。在此目录中,使用以下
.htaccess
的文件
RewriteEngine On
RewriteRule ^(.*)$ http://api.steampowered.com/$1 [P]
[P]告诉Apache代理请求。现在,不要向api.steampower.com发出请求,而是在XHR / AJAX url参数中使用下面的绝对url
/steamapi/ISteamUser/GetFriendList/v0001/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&steamid=76561197960435530&relationship=friend
Apache会将请求重写为下面的URI并将结果代理回给您。您的浏览器不会抱怨,因为您正在向同一个域发出请求。
http://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&steamid=76561197960435530&relationship=friend
答案 1 :(得分:0)
据我所知,对于Steam的公共API,他们不应该像上面的答案所说的那样需要一个代理来做AJAX请求(这是我假设你正在做的事情),因为他们肯定必须实现CORS。此外,这只是一个浏览器限制,不应该影响任何服务器端。
限制Dustin试图解释如何解决如何向域上的站点发出AJAX请求,该域与您请求的不允许CORS(跨源资源共享)的域不同。因此,网站会将数据发送到代理服务器,该代理服务器设置为代表它发出请求并返回数据。
您能详细说明在尝试提出请求时遇到的错误吗?
我假设您使用的是此处找到的API, https://developer.valvesoftware.com/wiki/Steam_Web_API#GetPlayerSummaries_.28v0001.29
在这种情况下,我不得不问,如果你看到所有X都在哪里,那么这些就是URI中的占位符。您应该拥有一个Steam Web API密钥,而不是X,您可以从此处注册:
https://steamcommunity.com/dev/apikey
我不确定域名在注册时是否重要,因为我以前重新调整了密钥。
请注意,Valve的公共API非常有限,并且网上浮动的一些库不使用它们,而是为其主站点反向设计Valve的Oauth登录代码以使用私有的,未记录的Web API,或者他们以某种方式逆向设计了桌面客户端本身。