我正在尝试开发一个在Firefox 3中使用javascript中的getImageData的应用程序,但是我在getImageData调用上得到了一个“NS_ERROR_DOM_SECURITY_ERR
”。 javascript和图像目前都是由硬盘驱动器提供的,这显然是一种安全违规行为?如果它是实时的,它们都将来自同一个域,所以它不会成为问题,但我怎么能在此期间发展呢?
答案 0 :(得分:5)
您可以告诉浏览器错误。根据您的具体情况,解决方案可能更好或更差。我将它包装在一个尝试中,因此如果它不是问题,则不会出现安全对话框。
var data;
try {
try {
data = context.getImageData(sx, sy, sw, sh).data;
} catch (e) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
data = context.getImageData(sx, sy, sw, sh).data;
}
} catch (e) {
throw new Error("unable to access image data: " + e);
}
答案 1 :(得分:3)
您可以尝试安装本地Web服务器,例如Apache(在unix上)或IIS(在Windows上)。这最终将为您提供最适合网络相关内容的本地测试平台,因为您发现浏览器处理文件系统中的文件与从网络服务器提供的内容完全不同。
答案 2 :(得分:2)
在Firefox中,在地址栏中输入“about:config”。然后使用搜索字段搜索“security.fileuri.strict_origin_policy”。双击此项将其设置为“false”。
答案 3 :(得分:1)
在FireFox 11.0中使用getImageData
时遇到了同样的问题...
我的所有文件和代码都在我的服务器上,我的本地计算机上没有任何内容。
我想也许这可以帮助那些和我有同样问题的人。
看起来Firefox会对待
http://mySite.com
与
不同的域名http://www.mySite.com
因此,当用户未在
中输入时,我使用.htaccess
添加www.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mySite\.com$ [NC]
RewriteRule ^(.*)$ http://www.mySite.com/$1 [L,R=301]
现在它工作正常,不再显示NS_ERROR_DOM_SECURITY_ERR
。