【问题标题】:How to use WhateverOrigin to circumvent same-domain policy如何使用WhateverOrigin规避同域策略
【发布时间】:2014-03-18 13:28:23
【问题描述】:

我去whateverorigin.com生成了这行javascript:

$.getJSON('http://whateverorigin.org/get?url=' +
  encodeURIComponent('http://google.com') + 
  '&callback=?', function(data){ alert(data.contents); });

我用它代替了我之前使用的XMLHttpRequest,但没有任何反应。 Chrome 说我有一个未捕获的引用错误:jQuery110201568311753217131_1395117728011 未定义。我一定不能把所有东西都设置好,除了在我的 JavaScript 中将该行与相关 url 放在一起之外,我还需要做什么?

【问题讨论】:

  • 你用的是什么版本的jquery?
  • @PatrickEvans jQuery 版本 1.10.2
  • @aquemini : 对于同一个域,您不需要使用 '&callback=?',即使使用它,您也必须重新发送与您的响应相同的回调
  • 有趣的是,您可以在页面上运行该代码并且它可以工作! :-)
  • 你能不能创建一个jsfiddle 来重现你的问题,因为jsfiddle.net/968TS 这个小提琴中的基本设置表明它可以工作

标签: javascript


【解决方案1】:

问题在于 Chrome 扩展程序有自己的沙盒全局变量,因此 JSONP 请求使用的全局回调函数在从 Chrome 扩展程序发出时不起作用。

有关详细信息,请参阅 JSONP request in chrome extension, callback function doesn't exist?JSONP communication in a Google Chrome extensionUsing jQuery.getJSON in Chrome Extension。这个问题可能是那个问题的重复。

如果您在 Google 上搜索“JSONP Chrome 扩展程序”,您会发现很多关于此问题的讨论,根据具体情况有几种不同的解决方案。

【讨论】:

  • @aquemini - 是的,丢失的信息是您在 Chrome 扩展程序中。一旦我们知道这是相关的差异,Google 搜索就非常简单。
猜你喜欢
  • 2013-09-08
  • 2013-06-27
  • 2011-10-03
  • 2014-05-29
  • 2011-06-20
  • 2011-12-02
  • 2011-06-21
  • 2014-01-17
相关资源
最近更新 更多