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ę.
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
@ 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'' . –
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