キャッチされないエラー:SECURITY_ERR:Cookieを設定しようとするとDOM例外18


121

この jQueryプラグインを使用してCookieを設定しようとすると、Chromeの開発者ツールウィンドウに次のエラーが表示されます。

キャッチされないエラー:SECURITY_ERR:DOM例外18

このエラーの意味と修正方法を教えてください。この jQueryプラグインを使用すると、同じエラーが発生します。


問題がキャンバスに関連している場合。これが答えですstackoverflow.com/questions/2390232/…–
jose920405

回答:


151

file://Cookieを設定できないURIスキーム上のローカルファイルでこれを使用している可能性があります。を使用できるように、ローカルサーバーに配置しますhttp://localhost


26
また、file://からロードされたときにキャンバスでgetImageData()を使用しているときにも起こりました。
Timmmm、2011年

6
別のホストからロードされたイメージに対してgetImageData()を呼び出すときにも、適切な呼び出しが行われます。ファイルを同じdomain / protocol / etcに移動します。それを修正します。
マイククラッグ

28
プロのヒント:Pythonがインストールされている場合python -m SimpleHTTPServerは、サイトのルートディレクトリに入力するだけで、localhost:8000ホストされていることがわかります。
トーマス

5
Python 3の場合、同じ効果を得るために必要なことpython -m http.server 8000
Kat

2
iOS開発者であれば、HTMLを直接UIWebViewコントロールにロードした後でlocalStorageを使用しようとしたときにもこの問題が発生したことを知りたいと思うかもしれません。stackoverflow.com/questions/11371441/...
フェリペサビノ

18

ローカルでHTML5を開発しているときにもこの問題が発生しました。画像とgetImageData関数に問題がありました。最後に、-allow-file-access-from-fileコマンドスイッチを使用してchromeを起動できることを発見しました。これにより、この保護セキュリティが取り除かれます。唯一のことは、ブラウザの安全性を低下させることです。フラグをオンにしたクロムインスタンスとフラグをオフにしたクロムインスタンスを同時に使用することはできません。


4
--allow-file-access-from-files(現在は複数形になっていることに注意してください)を使用する場合、スイッチが有効になるのは、Chromeの他のインスタンスがすでに実行されていない場合のみです。
BlueMonkMN 2010年

11

また、画像をそのインラインBase64表現で置き換えることにより、これを「修正」することもできます。

img.src= "data:image/gif;base64,R0lGODlhCwALAIAAAAAA3pn/ZiH5BAEAAAEALAAAAAALAAsAAAIUhA+hkcuO4lmNVindo7qyrIXiGBYAOw==";
Webでページを公開するつもりはないが、ローカルマシンでのみ使用する場合に便利です。


4
このエラーをスローしないようにキャンバスのbase64表現を取得する方法はありますか?
devios1 2012

var canvas = document.createElement( "canvas"); canvas.width = 128; canvas.height = 128; var ctx = canvas.getContext( '2d'); ctx.fillRect(25,25,100,100); ctx.clearRect(45,45,60,60); ctx.strokeRect(50、50、50、50); ctx.getImageData(0、0、128、128);を返します。
Ray Hulha 2013年

10

JavaScriptで遊んでいる同じ状況に直面 。残念ながら、Chromeではローカルファイルに保存されているJavaScriptワーカーにアクセスできません。

以下のローカルストレージを使用する回避策の1つは、Chromeを--allow-file-access-from-filess最後に)とともに実行することですが、許可されるChromeのインスタンスは1つだけであり、これは私には不便ではありません。このため、ファイルアクセスが許可されたChrome Canaryを使用しています。

ところで、Firefoxにはそのような問題はありません。


一回以上賛成できればいいのに。あなたの答えはちょうど私の頭を画面にぶつける時間のトンを節約しました!! 大変感謝します!!
Jaime

@Jaime my pleasure;)
Endre Simo


4

履歴APIを使用しているときにこの問題が発生しました。

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

ローカルサーバー(localhost)を使用している場合でも、URLに 'http://'を追加して、次のようなものを作成します。

http://localhost...

3

--allow-file-access-from-filesChromeをプライマリブラウザーとして使用しているため、このソリューションには完全に満足していませんでした。また、開いていたこの違反には本当に満足していませんでした。

現在、フラグをオンにした状態で開発にCanary(Chromeベータ版)を使用しています。そして、私の実際のブログのための単なるChromeバージョン:2つのブラウザーはフラグを共有しません!


1
好奇心が強い人にとっては、今は--allow-file-access-from-files(s付き)
Shane Reustle

2

また、許可を得る前に新しい(これまでのところWebkitのみ)通知機能を使用している場合にも、このエラーを受け取る可能性があります。

ファーストラン:

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

後で実行:

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

パーミッションのリクエスト機能は、ユーザーが発生させたイベントからトリガーする必要があります。そうしないと表示されません。


1

ASP.NET MVCを使用して、元のファイルとは異なるファイル名のファイルを返すオーバーロードを持つFileResultを返すと、モバイルサファリでそのエラーが発生していました。そう、

return File(returnFilePath, contentType, fileName);

モバイルサファリでエラーが発生します。

return File(returnFilePath, contentType);

しません。

なぜ自分がやっていることを良い考えだと思ったのか覚えていません。賢くなろうと思う。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.