【问题标题】:How can I make a cross-domain browser request to the Google Site Search XML API?如何向 Google Site Search XML API 发出跨域浏览器请求?
【发布时间】:2015-01-19 20:13:17
【问题描述】:

这是我的第一个 stackoverflow 问题,有点晦涩难懂......让我们看看它是怎么回事:

我在使用 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 结果。

任何帮助将不胜感激!

杰森

【问题讨论】:

    标签: ajax xml api cors google-custom-search


    【解决方案1】:

    如果 XML 响应不包含所需的 CORS 标头,并且您无法修改它,则只能在您的服务器上使用代理。

    代理不会受到 CORS 限制的影响,对于您的 JS,您现在可以添加标头或在同一域上托管代理。

    但是现在您的服务器发出请求,而不是客户端的浏览器。所有用户都从同一个 IP 请求数据。以这种方式使用 Google API 的规定是不同的。

    【讨论】:

    • 感谢您的回复。我应该提到,服务器无法发出请求。不允许服务器向外访问 Internet。这是一个教育部网站,他们已经锁定了服务器的出站互联网访问。请求必须来自浏览器。
    • 更准确地说,我必须从基于浏览器的请求中获取 XML,然后将 XML 作为 .NET 表单的一部分提交,然后将其发送到服务器。
    • 您可以将代理托管在可以访问 Internet 的单独服务器上。您的代理服务可以添加 CORS 标头,您就可以将其加载到浏览器中。
    • 这听起来像是一个计划。我大概会走那条路。谢谢!
    猜你喜欢
    • 2017-03-07
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多