6

Mam stronę na serwerze wewnętrznym, server1.mydomain.com/page.jsp i inną stronę na innym serwerze wewnętrznym, 10.x.x.x: 8081/page.aspx.SECURITY_ERR: DOM Exception 18 podczas stosowania document.domain na obu stronach. Jak rozwiązać ten problem?

Na server1.mydomain.com, ustawić document.domain w page.jsp tak:

//page.jsp on server1.mydomain.com 
document.domain = document.domain; 

Kiedy dokonaniu wpisu na document.domain, to pojawia się jako server1.mydomain.com.

Na serwerze 10.xxx, ustawić document.domain w page.aspx, w wyniku, na przykład:

//page.aspx on 10.x.x.x 
document.domain = "server1.mydomain.com"; 
// test if same-origin policy violation occurs 
document.getElementById("div_el").innerHTML = window.top.location.href; 

W Safari 5.1.5, błąd wyskakuje w konsoli:

SECURITY_ERR: DOM Exception 18: An attempt was made to break through the security policy of the user agent." 

Z tego co rozumiem, podczas ustawiania document.domain, numer portu jest ustawiony na null; więc musisz ustawić to na obu końcach, co zrobiłem. Wtedy pojawia się ten błąd i podrapuję się w głowę, dlaczego. Czy ma to coś wspólnego z faktem, że używam 10.x.x.x, a nie rzeczywistą nazwą domeny?

Dziękuję.

Odpowiedz

15

Możesz użyć tylko document.domain, aby zmienić z bardziej szczegółowej subdomeny na mniej szczegółową. Podobnie jak ...

console.log(document.domain); // server1.mydomain.com 

document.domain = 'mydomain.com' 

console.log(document.domain); // mydomain.com 

Nie można jej użyć do ustawienia subdomeny bardziej szczegółowej lub zupełnie innej.

+0

Tak więc, jeśli zmienię oba na mydomain.com, pod warunkiem, że oba serwery znajdują się w witrynie mydomain.com, będzie działać? Załóżmy, że mam server1.subdomain.mydomain.com i server2.subdomain.mydomain.com. Jeśli ustawię oba na mydomain.com, czy to zadziała? – user717236

+1

@ user717236: Jeśli strona klienta jest hostowana z 'mydomain.com', nie będziesz w stanie wysyłać żądań AJAX do' server1.subdomain.mydomain.com' lub 'server2 ...', i używając 'document. domena 'nie pomoże. Ale jeśli jest odwrotnie, a strona klienta jest hostowana na przykład z 'server1.subdomain.mydomain.com', możesz użyć' document.domain', dzięki czemu będziesz mógł wysyłać żądania do 'mydomain.com'' . –

+0

O, widzę. Tak więc, w moim przypadku, nie sądzę, że to zadziała, ponieważ strony są skutecznie hostowane na hostname.subdomain.mydomain.com. Jeśli jeden był serverX.mydomain.com, a drugi był serverYpoddomain.mydomain.com, to mógłbym coś z tym zrobić. Powrót do deski kreślarskiej. Dziękuję za pomoc. – user717236

3

Możesz ustawić tylko wartość document.domain lub super-domenę bieżącego ustawienia. Tak więc strona w "foo.something.com" może ustawić ją na "coś.com", ale nie "something.else.com".

+0

Dziękuję za pomoc. Tak, myślę, że teraz rozumiem to trochę lepiej. Te dwa hosty nie mogą się ze sobą komunikować za pomocą document.domain, ponieważ jest skonfigurowany. Będę musiał wymyślić coś innego. Dzięki jeszcze raz. – user717236

Powiązane problemy