Z jakiegoś powodu chrome nie obsługuje już document.domain i wyrzuca błąd, gdy linia jest odczytywana w iframe zawierającej subdomenę i subdomenę zawierającą iframe. Czy jest w ogóle wokół tego?

Błąd: Nieprzechwycony Błąd: SECURITY_ERR: Wyjątek DOM 18

15
Trevor 18 sierpień 2011, 10:12

2 odpowiedzi

Najlepsza odpowiedź

Domena dokumentu powinna być pisana małymi literami, a zasady są takie:

// Actual domain is "www.foo.com" 
document.domain = "foo.com"; // this is valid 

// Actual domain is "bar.foo.com" 
document.domain = "www.foo.com"; // this is invalid, "bar.foo.com" is not a subdomain of "www.foo.com" 

// Actual domain is "blah.bar.foo.com" 
document.domain = "bar.foo.com" // Ok 
document.domain = "foo.com" // Still ok 
document.domain = "bar.foo.com" // Invalid, you can't change it back to a more specific domain. 
18
Brian Webster 23 październik 2012, 18:28
1
Na wszelki wypadek, gdyby ktoś szukał referencji: developer.mozilla. org/en-US/docs/Web/Security/…
 – 
juminoz
1 luty 2017, 19:55

document.domain powinien działać w przypadku ramek iframe, o ile jesteś w tej samej domenie:

iframe=document.querySelector('iframe');
console.log(iframe.contentDocument.domain)

Jeśli próbujesz uzyskać dostęp do dokumentu elementu iframe, który znajduje się w innej domenie niż ramka nadrzędna, pojawi się błąd zabezpieczeń, który widzisz.

Pamiętaj, że subdomeny są również uważane za różne domeny, więc możesz napotkać problemy z wieloma domenami: Pytanie dotyczące międzydomenowego (subdomeny) żądania ajax

0
Community 23 maj 2017, 15:01