我需要从第三方API中提取数据。他们的服务器阻止了来自Google App Engine的请求(所有来自GAE的请求都获得了一个不错的标头,说明它来自App-Engine:|)。始终获得Http 403 Forbidden。
是否可以将App Engine配置为使用某种代理,以避免被拒绝向API发出请求?
我已经在本地测试了Web服务,并且效果很好。 App Engine在其他国家/地区(欧洲西部)运行。
我正在使用HttpURLConnection发出请求。
请注意,App Engine具有一组无法修改的标头,因此,如果其中之一是API阻止请求条件的一部分,那么您将一无所获。
但是,其中有一些可以修改,因此,我建议您进行测试以查看是否确实如此,因为这将给您带来很多麻烦。您可以在Outbound Requests文档中找到有关App Engine“必须具有”出站标头的更多信息。
由于您提到了App Engine应用的位置(欧洲西部),因此我也倾向于认为这可能是问题的原因。我建议进行测试,以查看部署在不同区域中的应用程序是否收到相同的响应。
由于App Engine标头或位置存在问题,您可以通过设置“代理服务器”来解决该问题,该服务器可以托管在Google Compute Engine Instance上,并将服务器配置为删除这些标头。
正确的配置将取决于您选择的服务器,例如,Squid为此提供了一个request_header_access。然后,您可以使用Proxy API仅将API调用重定向到代理服务器。 Here您可以找到有关如何使用代理API的很好的解释。
注意删除标头与[]相抵]也很重要,因此在决定如何进行操作之前,最好先确定为什么目标API具有来自App Engine的调用有此限制”。 > 我希望这会有所帮助。