121

当我尝试使用jQuery 插件设置 cookie 时,我在 Chrome 的开发人员工具窗口中收到以下错误:

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

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

4

9 回答 9

151

您很可能通过file://URI 方案在本地文件上使用它,该方案不能设置 cookie。将它放在本地服务器上,以便您可以使用http://localhost.

于 2010-04-24T15:43:40.707 回答
18

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

于 2011-03-12T15:46:58.790 回答
11

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

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

于 2011-06-03T12:18:11.180 回答
10

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

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

顺便说一句,Firefox 中没有这样的问题。

于 2012-04-18T11:21:25.337 回答
5

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

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

于 2011-10-04T21:24:39.650 回答
4

我在使用历史 API 时遇到了这个问题。

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

即使使用本地服务器 (localhost),您也希望将“http://”添加到您的 URL,以便您拥有类似于以下内容的内容:

http://localhost...
于 2013-05-08T04:13:48.107 回答
3

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

现在我正在使用 Canary(chrome beta 版本)进行开发,并打开标志。以及我真正的博客的纯 Chrome 版本:两个浏览器不共享标志!

于 2011-08-08T17:32:54.387 回答
2

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

第一次运行:

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

稍后运行:

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

请求权限功能需要由用户引起的事件触发,否则不会显示。

于 2012-08-08T19:18:00.857 回答
1

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

return File(returnFilePath, contentType, fileName);

会在移动 safari 中出现错误,其中

return File(returnFilePath, contentType);

不会。

我什至不记得为什么我认为我正在做的事情是个好主意。我猜想变得聪明一点。

于 2012-09-11T03:32:39.427 回答