【问题标题】:Ajax: Load XML from different domain?Ajax:从不同的域加载 XML?
【发布时间】:2010-05-11 10:22:11
【问题描述】:

我已注册(付费)使用 Google 网站搜索。他们为我提供了一种 Web 服务的 url,我可以向它发送查询,它搜索我的网站,并返回搜索结果的 XML。好吧,我正在尝试通过 Ajax 从我网站上的页面加载此 XML,但我不能。我可以从我的域上的任何页面加载,所以我假设这是因为 XML 在 Google 的域上。所以必须有一种方法来加载它,但如果我不能用它做任何事情,我认为他们不会给我 URL 哈哈。有谁知道怎么做?

谢谢!

更新:

这就是谷歌页面上给我 XML 的内容:

如何获取 XML

您可以获得 XML 结果 通过替换查询+术语来搜索引擎 在此 URL 中使用您的搜索查询:

http://www.google.com/cse?cx=MY_UNIQUE_KEY&client=google-csbe&output=xml_no_dtd&q=query+terms

其中 MY_UNIQUE_KEY = 我的唯一密钥。

【问题讨论】:

    标签: javascript ajax cross-domain


    【解决方案1】:

    您无法使用 AJAX 加载外部文件。但是,您可以在自己的服务器上设置一个文件,使内容在您的服务器上可用。例如在 PHP 中,你可以写一个文件googlexml.php:

    <?php
    @readfile("http://www.google.com/cse?cx=MY_UNIQUE_KEY&client=googlecsbe&output=xml_no_dtd&q=query+terms");
    ?>
    

    然后您可以使用 AJAX 访问它。我不确定 Google 的使用条款是否允许您这样做,但如果他们允许,那么这是一个选项。

    【讨论】:

    • 好建议。请注意,这仅在 php 中启用 fopen 包装器时才有效,由于安全问题,情况并非总是如此......au.php.net/manual/en/…
    • 我昨晚真的有这个想法,虽然我在想cURL,但我尝试了你的建议,它只是返回一个空白页。
    【解决方案2】:

    谷歌不提供将 DNS 地址转发到您服务的 IP 并将其折叠到您的域中的功能吗?这样你就可以在 AJAX 中做

    googleAlias.mydomain.com
    

    Google 应该支持这一点,但我不确定。我想他们会以与 GMail 和外部域邮件相同的方式。

    消除您的跨域 javascript 问题

    编辑我在下面展开,另一位用户很有帮助地指出这应该可以工作(感谢 Stobor)

    好吧,如果我记得的话,为了让我的公司邮件进入 GMail,我需要将我的 DNS 上的 MX 记录更改为指向一个谷歌 IP。如果 google 支持,您可以将 A 记录添加到您的域,因此对 foo.yourdomain.com 的 AJAX 请求与 search.google.com 或其他任何内容相同。 Google 需要识别 A 记录中来自您的主机名的请求,并说“哦,是的,那是我,代表我的客户”

    【讨论】:

    • 我不知道,实话告诉你,你说的我都听不懂了。
    • 好吧,如果我还记得的话,我需要将我的 DNS 上的 MX 记录更改为指向谷歌 IP,才能将我的公司邮件导入 GMail。如果 google 支持,您可以将 A 记录添加到您的域,因此对 foo.yourdomain.com 的 AJAX 请求与 search.google.com 或其他任何内容相同。 Google 需要识别 A 记录中来自您的主机名的请求,并说“哦,是的,那是我,代表我的客户”
    • @Aiden:刚刚通过操作我的主机文件进行了快速测试,这似乎确实有效。
    【解决方案3】:

    对于现在遇到这种情况的人来说,AJAX 搜索 API 可能就是您想要的:http://code.google.com/apis/ajaxsearch/documentation/

    编辑:实际上,经过进一步审查,这可能与网站搜索无关...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 2019-03-19
      相关资源
      最近更新 更多