【问题标题】:How can we use JavaScript for cross-domain getting of a web page Without the use of XMLHttpRequest? Is there a plug-in that could do this?我们如何在不使用 XMLHttpRequest 的情况下使用 JavaScript 跨域获取网页?有没有可以做到这一点的插件?
【发布时间】:2011-06-18 05:44:36
【问题描述】:

使用 JavaScript,非常需要从 Web 获取一些页面,而无需实际从当前页面移动并隐藏在用户的视线之外。

要请求一个网页而不向用户显示它,使用 XMLHttpRequest 很容易,但它有其自身的局限性,最重要的是它不能很好地检索跨域页面。出于安全原因,浏览器(在我的情况下为 Mozilla FireFox 3.6+)从目标站点检索标头,如果允许在该标头中访问引用者的位置,则只有这样浏览器才能继续获取目标网页,JavaScript 才能解析检索到的信息。

这会导致 XMLHttpRequest 与某些页面一起工作,而不能与其他页面一起工作如果您正在尝试访问 跨域页面。当然,如果您需要从与 XMLHttpRequest 所在的引用页面相同的位置检索信息,它会很好地工作。

这是一个大问题,当 security 并不是真正的第一优先级时。例如,想象编写一个脚本来从生成统计数据的网站检索实时数据,或者想象一个机器人需要从在线游戏网站检索数据。

现在,如何使用 JavaScript 从其他域获取页面(跨域引用)?

我想也许我们可以找到一个插件来完成这项工作(当然是在用户许可后安装)然后通过 JS 使用它的属性并消除对 XMLHttpRequest 的需要。 您知道解决此问题的任何此类插件或其他回旋处吗? (即在没有 XMLHttpRequest 的情况下通过 JS 获取跨域数据) 当然我们不能使用 XMLHttpRequest,因为我们无法控制目标页面标题,我们显然希望对用户隐藏整个过程

【问题讨论】:

  • "隐藏在用户的眼睛之外" 你可能会问"请,有人告诉我如何解除大银行的安全系统,因为它阻止我走进安全...并禁用摄像头所以银行员工看不到我在做什么。”即使你能把它拉下来,那也是错误的。真的应该有一些方法来阻止人们询问如何在这个网站上进行黑客攻击。

标签: javascript security plugins xmlhttprequest cross-domain


【解决方案1】:

您会发现,目标 网站将自身安全放在首位才是最重要的。如果他们不关心访问他们网站的其他网站上的 JavaScript,他们可以为跨域 XMLHTTPRequest 设置 HTTP 访问控制标头,为 Flash 提供 crossdomain.xml 文件,提供 JSONP API,或为 iframe 提供一些挂钩监控。

第二种解决方案是向您域上的服务器发出请求,该服务器将请求代理到目标站点。在某些情况下,您可以使用支持跨域或 JSONP 请求的第三方服务器,例如 Yahoo!管道。

如果这些都不可行,您需要说服用户允许您在他们的 PC 上运行自己的代码。这可以通过请求特殊权限的签名 Java 小程序或您自己的自定义浏览器插件或扩展来实现。

【讨论】:

  • 是的,凯莉。谢谢你。我最喜欢第三种解决方案。在这种情况下,其他两个是不可行的。因为有 100% 的信任确实安装了该小程序或插件或扩展。但问题是“是否有这样的插件/小程序可供我简单地嵌入和使用?
【解决方案2】:

有几种方法,包括使用 JSONP 和 XMLHttpRequest、使用 Flash 和使用 iframe。

以下是有关此主题的一些信息。 http://snook.ca/archives/javascript/cross_domain_aj

【讨论】:

  • 谢谢你,aruseni,但是 JSON 和 Flash 方式仍然需要你对目标站点有一些控制,才能将 header/xml/etc 放在服务器端。代理方法也不在JS字段中
  • 而 iram 不可用,因为 1- 它不会向用户隐藏页面。 2- 当 iFram 加载时,所有嵌入的文本都会破坏页面的外观 3- 最糟糕的是,目标网站会检查窗口的层次结构并禁止未在顶层浏览其网站的用户(他们不'不想让机器人出现在他们的页面上)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-27
  • 2017-04-22
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
相关资源
最近更新 更多