【问题标题】:cross-domain ajax to foreign domain with pure JS and html使用纯 JS 和 html 跨域 ajax 到外部域
【发布时间】:2011-12-20 01:23:11
【问题描述】:

首先 - 我已经阅读了很多类似的问题和其他谷歌页面/博客。

有很多方法可以进行跨域通信,但是当我无法修改我想要调用的页面(例如 http://www.imdbapi.com/?t=True%20Grit&y=1969 )时,有什么方法可以让我做到这一点?

我可以在http://www.imdbapi.com/?t=True%20Grit&y=1969 中使用postMessage solution(这种方法对我来说最好)而不进行任何修改吗?看起来它没有帮助页面(方法之一)。

我不想使用任何 3rd 方库 / php 脚本 / 等 - 只是纯 html 和 javascript - 是否可以调用这样的“不可变”页面? ...并在我自己的页面上解析它(简单的 iframe 是不够的)

请帮忙 - 我的大量研究让我一无所获

【问题讨论】:

  • 你有 jquery 吗?如果是这样,我会发布一个解决方案。
  • @Moe Sweet,我知道使用 jqeury(和 easyxdm 等)很容易 - 我真的做了一些搜索,相信我 :) 但是“我不想使用任何 3rd 方库 / php 脚本 / 等 - 只是纯 html 和 javascrip”。
  • 然后忘记 jquery 插件,你可以做原生 HTML5 postMessage。我现在正在做同样的事情。 :)

标签: javascript html ajax cross-domain same-origin-policy


【解决方案1】:

好的,事情就是这样。所做的是从同一域请求数据。 inter-subdomain 和 subdomain-domain 请求不是“同一个域”,只是为了说明问题。由于该页面是“同域”,因此无需助手即可。

AJAX 不允许跨域请求。据我所知,有允许跨域请求的方法(例如帮助页面)

目前,jQuery 支持 jsonp,你可以这样做:

http://api.jquery.com/jQuery.getJSON/

在页面中查找:“从 Flickr JSONP API 加载四张最新的猫图片。”

或参见参考资料:

http://en.wikipedia.org/wiki/JSONP

【讨论】:

  • 抱歉,jquery 不是一个选项。
【解决方案2】:

理论上,您需要一个与 ajax 页面所在域相同的代理 iframe。

  1. 从父页面到 iframe 页面的 postMessage。
  2. 然后是 iframe 的 ajax。

如果您无权访问父页面的源代码,您可以通过书签或其他方式注入您的脚本。注入还可以包括 jquery 和 postMessage 插件以及创建 iframe 的脚本。

我正在使用这个 postMessage 插件,它适用于带有 HTML5 的最新 IE/FF/Chrome/Safari。它声称有旧版浏览器的 URL #ing 回退,但我还没有测试过。

http://benalman.com/projects/jquery-postmessage-plugin/

【讨论】:

  • 我可以在不注入脚本的情况下使用postMessage吗?在我的情况下 - 我不能使用 Bookmarklet / Greasemonkey 或任何其他与浏览器一起使用的脚本注入器。
  • postMessage 是 HTML5 功能。它适用于所有支持 HTML5 的浏览器,无需注入任何脚本。我已经看到 imdbapi.com/?t=True%20Grit&y=1969 正在返回一个干净的 JSON 数据。如果你想抓取这些数据,你甚至不需要浏览器、iframe 和 ajax。您可以只从您的 Web 服务器 CURL 和 json_decode() 输出并立即将其用作 PHP 对象。我错过了什么吗?
  • 使用 php 和 Java 以及任何其他的东西都很容易......但我只能用 html 和 js 来做 - 可以做到吗? Normaly ajax 不会工作 - XMLHttpRequest cannot load http://www.imdbapi.com/?i=tt1285016. Origin null is not allowed by Access-Control-Allow-Origin. 因为起源
  • 然后回到第一个答案,第1步和第2步。但是既然你是AJAXing并且你说你没有PHP,我想知道Ajax调用的页面会做什么。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 2015-12-02
  • 2013-03-15
相关资源
最近更新 更多