1

我也在超级用户上发布这个问题。在我看来,这个问题与两者重叠......


我正在为 CouchDB 的 REST-ful 接口创建一个简单的 JavaScript 包装器,但我被困在同源策略问题上。

到目前为止,我一直在开发我的代码以在 Mozilla FireFox 上本地工作 - 并且仅作为概念证明。我的服务器在 localhost 的 5984 端口上运行。

要在 Mozilla FireFox 中禁用跨域策略,您可以使用PrivilegeManager,但它只能让我半途而废,因为我无法对我的服务器执行 PUT 请求......

/*
 * Including this in my JavaScript file only seems to disable cross-origin
 * policy checks for POST and GET requests in Mozilla FireFox.
 * PUT requests fail.
 */

netscape.security.PrivilegeManager.enablePrivilege(
    "UniversalBrowserRead UniversalBrowserWrite"
);



有什么方法可以配置我的服务器以隐藏它的位置,这样我就不必实施特定于浏览器的解决方法来避免同源策略问题?如果不是:存在哪些浏览器解决方法可以完全禁用同源策略?

4

2 回答 2

3

不幸的是,任何禁用同源策略的浏览器变通方法都可能被视为严重的安全错误并尽快修复。

看看你是否能想出一种在同源策略下工作而不试图绕过它的方法。

您可以在目标服务器上提供示例脚本吗?您能否构建一个反射脚本,在用户计算机上的本地脚本上传他们修改的任何内容后,将目标脚本加载到您的服务器上?

应该有一个很好的解决方案,不涉及绕过同源策略。尝试破解它是确保您的代码在未来的浏览器中无法正常工作的好方法。

于 2010-09-07T19:13:46.183 回答
0

我也为这个问题苦苦挣扎,试图在连接到虚拟化 CouchDB 服务器的本地 html 文件上运行自动化测试,这是我的解决方案:

当您无法在服务器上启用 CORS 时,我创建了一个最简单解决方案的小型实现(并将其开源),

您需要将 .js 和 .html 文件上传到目标服务器,(如果需要,您可以使用任何安全机制来限制对该文件的访问)。或者您可以更改 html 文件上的一些简单参数以按域进行限制。

在您的页面上,您使用相同的脚本创建一个不可见的 iframe,在其中加载托管的 .html,并使用 window.postMessage() 通过 iframe 代理某些方法(RPC 排序),默认情况下,jQuery ajax 方法可以在没有代理的情况下额外的配置。

这一切只需要一行 js 代码 :)

GitHub 上的 FrameProxy

(随意使用它并分叉它!)

于 2012-01-06T14:25:13.167 回答