Yakalanmamış Hata: SECURITY_ERR: DOM Bir çerez ayarlamaya çalıştığımda İstisna 18


121

Bu jQuery eklentisini kullanarak bir çerez ayarlamaya çalıştığımda Chrome'un geliştirici araçları penceresinde aşağıdaki hatayı alıyorum :

Yakalanmayan Hata: SECURITY_ERR: DOM İstisna 18

Bu hata ne anlama geliyor ve bunu nasıl düzeltebilirim? Bu jQuery eklentisini kullandığımda da aynı hatayı alıyorum .


Sorununuz tuval ile ilgiliyse. Yanıt budur stackoverflow.com/questions/2390232/…
jose920405

Yanıtlar:


151

Bunu büyük olasılıkla file://, çerezleri ayarlayamayan URI şeması üzerinden yerel bir dosyada kullanıyorsunuz . Kullanabilmeniz için yerel bir sunucuya koyun http://localhost.


26
File: // 'den yüklendiğinde bir tuval üzerinde getImageData () kullandığım da oldu.
Timmmm

6
İyi çağrı, başka bir ana bilgisayardan yüklenen bir görüntü için getImageData () çağrıldığında da olur. Dosyayı aynı etki alanına / protokole / vb. Taşımak. düzeltir.
mike clagg

28
Profesyonel ipucu: Python yüklediyseniz, python -m SimpleHTTPServersitenizin kök dizinini yazmanız ve localhost: 8000'de barındırıldığını bulmanız yeterlidir .
Thomas

5
Python 3 için, aynı etkiyi elde etmek için yapmanız gerekenpython -m http.server 8000
Kat

2
Bir iOS geliştiricisi iseniz, HTML'yi doğrudan UIWebView denetimine yükledikten sonra localStorage'ı kullanmaya çalışırken de bu sorunu yaşadığımı bilmek ilginizi çekebilir. stackoverflow.com/questions/11371441/…
Felipe Sabino

18

Yerelde HTML5 üzerinde geliştirme yaparken de bu sorunu yaşadım. Resimler ve getImageData işleviyle ilgili sorunlar yaşadım. Son olarak, bu koruma güvenliğinden kurtulan --allow-file-access-from-file komut anahtarıyla Chrome'un başlatılabileceğini keşfettim. Tek şey, tarayıcınızı daha az güvenli hale getirmesidir ve bayrak üzerinde ve bayrak olmadan bir krom örneğine sahip olamazsınız.


4
--Allow-file-access-from-files komutunu kullandığınızda (artık çoğul olduğuna dikkat edin), anahtarın yalnızca halihazırda çalışan başka Chrome örnekleri yoksa etkili olacağını hatırlamanız gerekir.
BlueMonkMN

11

Resmi, satır içi Base64 gösterimiyle değiştirerek de bunu "düzeltebilirsiniz":

img.src= "data:image/gif;base64,R0lGODlhCwALAIAAAAAA3pn/ZiH5BAEAAAEALAAAAAALAAsAAAIUhA+hkcuO4lmNVindo7qyrIXiGBYAOw==";
Sayfayı web'de yayınlamak istemediğinizde, bunun yerine onu yalnızca yerel makinelerde kullandığınızda kullanışlıdır.


4
Bir tuvalin base64 temsilini bu hatayı atmayacak şekilde nasıl elde edeceğiniz hakkında bir fikriniz var mı?
devios1

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); dönüş ctx.getImageData (0, 0, 128, 128);
Ray Hulha

10

Javascript ile oynarken aynı durumla karşı karşıya . Maalesef Chrome, yerel bir dosyada depolanan javascript çalışanlarına erişime izin vermiyor.

Yerel bir depolama alanı kullanarak aşağıdaki bir tür geçici çözüm, Chrome'u --allow-file-access-from-files( ssonunda ile) çalıştırmaktır, ancak benim için çok uygun olmayan yalnızca bir Chrome örneğine izin verilir. Bu nedenle, dosya erişimine izin verilen Chrome Canary kullanıyorum.

Firefox'ta BTW böyle bir sorun yok.


Keşke birden fazla oy verebilseydim. Cevabınız, kafamı ekrana vurarak TONS zaman kazandırdı !! Çok çok teşekkürler!!
Jaime

@Jaime benim için zevk;)
Endre Simo


4

Geçmiş API'sini kullanırken bu sorunu yaşadım.

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

Yerel bir sunucuda (localhost) bile, aşağıdakine benzer bir şeye sahip olmak için URL'nize 'http: //' eklemek istersiniz:

http://localhost...

3

Çözümden tamamen memnun --allow-file-access-from-filesdeğildim, çünkü Chrome'u birincil tarayıcım olarak kullanıyorum ve açtığım bu ihlalden gerçekten memnun değildim.

Şimdi geliştirmem için bayrak üzerinde Canary'yi (krom beta sürümü) kullanıyorum. Ve gerçek blog yazmam için Chrome sürümü: iki tarayıcı bayrağı paylaşmıyor!


1
Merak edenler için, şimdi --allow-file-access-from-files (bir s ile)
Shane Reustle

2

İzin almadan önce yeni (şimdiye kadar yalnızca webkit) bildirim özelliğini kullanıyorsanız da bu hatayı alabilirsiniz.

İlk çalıştırma:

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

Daha sonra çalıştırın:

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

İzin isteği işlevlerinin, kullanıcının neden olduğu bir olaydan tetiklenmesi gerekir, aksi takdirde görüntülenmez.


1

Orijinalden farklı bir dosya adına sahip bir dosya döndüren aşırı yüklemeye sahip bir FileResult döndürmek için ASP.NET MVC'yi kullanırken mobil safaride bu hatayı alıyordum. Yani,

return File(returnFilePath, contentType, fileName);

hatayı mobil safaride verirdi,

return File(returnFilePath, contentType);

olmazdı.

Yaptığım şeyin neden iyi bir fikir olduğunu düşündüğümü bile hatırlamıyorum. Akıllı olmaya çalışıyorum sanırım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.