未捕获错误:SECURITY_ERR:DOM异常18当我尝试设置cookie时

时间:2010-04-24 15:12:32

标签: javascript jquery html domexception

当我尝试使用this jQuery插件设置Cookie时,Chrome在开发人员工具窗口中出现以下错误:

  

未捕获错误:SECURITY_ERR:DOM异常18

这个错误意味着什么,我该如何解决?当我使用this jQuery插件时,我得到了同样的错误。

9 个答案:

答案 0 :(得分:150)

您最有可能在file:// URI方案的本地文件上使用此方法,该方案无法设置Cookie。将其放在本地服务器上,以便您可以使用http://localhost

答案 1 :(得分:18)

我在本地开发HTML5时遇到了这个问题。 我有图像和getImageData函数的问题。 最后,我发现可以使用--allow-file-access-from-file命令开关启动chrome,从而摆脱这种保护安全性。 唯一的问题是它会使你的浏览器不那么安全,并且你不能有一个带有标志的chrome实例和没有标志的另一个。

答案 2 :(得分:11)

您还可以通过使用其内联Base64表示替换图像来“修复”此问题:

img.src= "data:image/gif;base64,R0lGODlhCwALAIAAAAAA3pn/ZiH5BAEAAAEALAAAAAALAAsAAAIUhA+hkcuO4lmNVindo7qyrIXiGBYAOw==";
当您不打算在Web上发布页面时,但仅在本地计算机上使用它时很有用。

答案 3 :(得分:10)

面对与Javascript 一样的情况。不幸的是,Chrome不允许访问存储在本地文件中的javascript worker。

下面使用本地存储的一种解决方法是使用--allow-file-access-from-files运行Chrome(最后使用s),但只允许使用一个Chrome实例,这对我来说不太方便。出于这个原因,我正在使用Chrome Canary,允许文件访问。

在Firefox中BTW没有这样的问题。

答案 4 :(得分:5)

如果您尝试使用数据URI方案创建Web工作程序,则会弹出此错误。

var w = new Worker('data:text/javascript;charset=utf-8,onmessage%20%3D%20function()%20%7B%20postMessage(%22pong%22)%3B%20%7D'); w.postMessage('ping');

根据标准不允许:http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#dom-worker

答案 5 :(得分:4)

使用历史记录API时遇到此问题。

window.history.pushState(null, null, URL);

即使使用本地服务器(localhost),您也希望在网址中添加“http://”,以便您有类似的内容:

http://localhost...

答案 6 :(得分:3)

我对--allow-file-access-from-files解决方案并不完全满意,因为我使用Chrome作为我的主要浏览器,并且对于我正在打开的这个漏洞感到不满意。

现在我正在使用Canary(Chrome测试版)进行开发,并使用标记。 我的真实博客仅仅是Chrome版本:两个浏览器不共享旗帜!

答案 7 :(得分:2)

如果在获得许可之前使用新的(目前为止仅限webkit)通知功能,也会收到此错误。

首先运行:

<!-- Get permission -->
<button onclick="webkitNotifications.requestPermission();">Enable Notifications</button>

后来运行:

// Display Notification:
window.webkitNotifications.createNotification('image', 'Title', 'Body').show();

请求权限函数需要从用户引起的事件中触发,否则不会显示。

答案 8 :(得分:1)

当使用ASP.NET MVC返回带有重载的FileResult时,我在移动safari中遇到了这个错误,该重载返回的文件名与原始文件名不同。所以,

return File(returnFilePath, contentType, fileName);

会在移动版Safari中给出​​错误,其中

return File(returnFilePath, contentType);

不会。

我甚至不记得为什么我认为我在做什么是一个好主意。我猜是想要聪明一点。