如何向 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 发出跨域浏览器请求?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Google 搜索框添加到我的网站?

使用 google 在 url 中搜索

如何在从Google Site添加时设置对Google云端硬盘文件/文件夹的权限

你不知道的Google Search

如何查看加密了的网页的源代码啊?

Android如何去除Launcher上默认的googlesearchbar