如何向 Google Site Search XML API 发出跨域浏览器请求?
Posted
技术标签:
【中文标题】如何向 Google Site Search XML API 发出跨域浏览器请求?【英文标题】:How can I make a cross-domain browser request to the Google Site Search XML API? 【发布时间】:2015-01-19 20:13:17 【问题描述】:这是我的第一个 *** 问题,有点晦涩难懂......让我们看看它是怎么回事:
我在使用 Google Site Search XML API 时遇到问题。我只是想使用 javascript 对 XML API 进行 AJAX 调用并检索 XML。不幸的是,这是一个 CORS 请求,并且 XML API 响应不包含 Access-Control-Allow-Origin 标头,因此请求失败。 JSON API 确实包含 CORS 响应标头,但我需要 XML API。有没有解决的办法?我应该使用另一个 Google API 来促进这一点吗?
或者,我可以使用将源设置为搜索 URL 的脚本标签,并以某种方式从脚本标签中获取 XML?我的理解是,如果 XML 结果来自跨域请求,您将无法访问脚本标签中的 XML 结果。
任何帮助将不胜感激!
杰森
【问题讨论】:
【参考方案1】:如果 XML 响应不包含所需的 CORS 标头,并且您无法修改它,则只能在您的服务器上使用代理。
代理不会受到 CORS 限制的影响,对于您的 JS,您现在可以添加标头或在同一域上托管代理。
但是现在您的服务器发出请求,而不是客户端的浏览器。所有用户都从同一个 IP 请求数据。以这种方式使用 Google API 的规定是不同的。
【讨论】:
感谢您的回复。我应该提到,服务器无法发出请求。不允许服务器向外访问 Internet。这是一个教育部网站,他们已经锁定了服务器的出站互联网访问。请求必须来自浏览器。 更准确地说,我必须从基于浏览器的请求中获取 XML,然后将 XML 作为 .NET 表单的一部分提交,然后将其发送到服务器。 您可以将代理托管在可以访问 Internet 的单独服务器上。您的代理服务可以添加 CORS 标头,您就可以将其加载到浏览器中。 这听起来像是一个计划。我大概会走那条路。谢谢!以上是关于如何向 Google Site Search XML API 发出跨域浏览器请求?的主要内容,如果未能解决你的问题,请参考以下文章