直接从文件中工作时出现"Unsafe JavaScript attempt to access frame"错误

3
我遇到了这个错误:
不安全的JavaScript尝试访问URL为file:// localhost / Users / bobrodes2 / Documents / PD%20Manager%20UI / 3.7 / FieldContactAddEdit.html#的框架,而该框架的URL为file:// localhost / Users / bobrodes2 / Documents / PD%20Manager%20UI / 3.7 / fieldcontacteditactions_modal.html。域,协议和端口必须匹配。
我已经阅读过相关资料,但是我无法理解这两个文件如何会成为不同的域(或端口)。它们都在同一台机器的同一个文件夹中!后面的文件是使用jQuery的dialog()方法设置为iframe的模态框。我不确定哪些代码有帮助,但很乐意发布任何请求的代码。
3个回答

2

2
这是一个浏览器安全问题。例如,Chrome将拒绝使用file://协议提供的任何文件的权限。
因此,举个例子,如果您试图通过打开到file://c/myfiles/mytext.txt的连接来进行AJAX调用,则Chrome会引发安全违规(因为为什么浏览器可以读取访问者的文件系统并将文件信息作为文本存储在Cookie中或发送以进行跟踪)。
iFrames也是同样的情况,如果画布用于保存从不同域加载的图片,则编辑画布数据也是同样的情况。
解决方案是设置一个Web服务器。任何语言都可以 - 我建议使用PHP,因为由于WAMP / EasyPHP / PHP5.4的内置Web服务器等原因,现在PHP服务器的安装时间几乎为零...
但是,只要您从IP地址或解析为IP地址的内容(甚至是0.0.0.0),该起源策略就应该消失。

1

只需启动一个简单的Web服务器。

如果您使用的是OS X或已安装Python,则只需cd进入要用作根目录的目录并使用...

python -m SimpleHTTPServer

文档


请问要进入哪个目录?(我在 OS X 上。) - BobRodes
@BobRodes 您想将其作为服务器根目录的文件的根目录。 - alex
好的,我做了这个:BobR-iMac:3.7 bobrodes2$ python -m SimpleHTTPServer 正在0.0.0.0端口8000上提供HTTP服务...现在我怎样引用我的HTML文件呢?我尝试了http://0.0.0.0/myfile.html,但它不起作用。 - BobRodes
1
@BobRodes 尝试使用 http://0.0.0.0:8000/myfile.html, 你不再使用 'file' 协议,需要指定端口。 - alex
明白了!我一定是在终端里关闭了它。谢谢!为了澄清,您需要在终端中保持命令打开状态,而不是退出并执行其他操作,如查看文件。 - BobRodes
1
@BobRodes 是的,如果你关闭正在运行的Python程序,服务器将无法再接受请求。但是你可以使用Ctrl+Z将其发送到后台,使用bg查看它,并使用fg将其带回前台。 - alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接