6

Ich habe eine Seite auf einem internen Server, server1.mydomain.com/page.jsp und eine andere Seite auf einem anderen internen Server, 10.x.x.x: 8081/page.aspx.SECURITY_ERR: DOM-Ausnahme 18 bei der Anwendung von document.domain auf beiden Websites. Wie kann ich das beheben?

Auf server1.mydomain.com, habe ich document.domain in page.jsp wie folgt aus:

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

Wenn ich eine Benachrichtigung auf document.domain ausgeben, es kommt als server1.mydomain.com.

Auf dem 10.xxx Server, habe ich in page.aspx als Folge document.domain, wie folgt aus:

//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; 

In Safari 5.1.5, erscheint ein Fehler auf der Konsole nach oben:

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

Aus was ich verstehe, wenn Sie document.domain festlegen, wird die Portnummer auf Null festgelegt; also musst du es an beiden Enden einstellen, was ich getan habe. Dann tritt dieser Fehler auf und ich kratze mich am Kopf warum. Hat das etwas damit zu tun, dass ich 10.x.x.x verwende und keinen tatsächlichen Domainnamen?

Vielen Dank.

Antwort

15

Sie können nur document.domain verwenden, um von einer spezifischeren Unterdomäne zu einer weniger spezifischen Domäne zu wechseln. Wie ...

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

document.domain = 'mydomain.com' 

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

Es kann nicht auf eine spezifischeren Sub-Domain oder zu einer ganz anderen Domäne verwendet werden.

+0

Also, wenn ich beide zu mydomain.com ändere, vorausgesetzt beide Server sind auf mydomain.com, würde es funktionieren? Angenommen, ich habe server1domain.mydomain.com und server2domain.mydomain.com. Wenn ich beides auf mydomain.com setze, würde es funktionieren? – user717236

+1

@ user717236: Wenn die Seite des Clients von 'mydomain.com' gehostet wird, können Sie keine AJAX-Anfragen an' server1domain.mydomain.com' oder 'server2 ...' stellen und 'document verwenden. Domain' wird nicht helfen. Wenn das Gegenteil der Fall ist und die Seite des Clients beispielsweise von 'server1domain.mydomain.com' gehostet wird, können Sie' document.domain' verwenden, um Anfragen an 'mydomain.com' zu stellen . –

+0

Oh, ich verstehe. Also, in meinem Fall glaube ich nicht, dass es funktionieren wird, da die Seiten effektiv auf hostname_domain.meinedomain.com gehostet werden. Wenn man serverX.mydomain.com wäre und der andere serverYdomain.mydomain.com, dann könnte ich etwas damit machen. Zurück zum Zeichenbrett. Danke für Ihre Hilfe. – user717236

3

Sie können document.domain nur auf den aktuellen Wert oder auf eine Super-Domäne der aktuellen Einstellung setzen. So kann eine Seite auf "foo.something.com" es auf "something.com" setzen, aber nicht auf "something.else.com".

+0

Vielen Dank für Ihre Hilfe. Ja, ich glaube ich verstehe es jetzt ein bisschen besser. Diese beiden Hosts können nicht mit document.domain kommunizieren, da sie eingerichtet ist. Ich muss an etwas anderes denken. Danke noch einmal. – user717236

Verwandte Themen