6

Dahili bir sunucuda, sunucu1.mydomain.com/page.jsp ve başka bir iç sunucuda başka bir sayfa var, 10.x.x.x: 8081/page.aspx.SECURITY_ERR: DOM her iki sitede de document.domain uygulandığında istisna 18. Bunu nasıl çözebilirim?

server1.mydomain.com, ben böyle page.jsp içinde document.domain ayarlayın:

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

Ben document.domain bir uyarı vermek, bu server1.mydomain.com olarak çıkageldi.

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

Safari 5.1.5 yılında bir hata konsolunda görüntüler: 10.xxx sunucusunda

, böyle bir sonucu olarak, page.aspx içinde document.domain set

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

Anladığım kadarıyla, document.domain öğesini ayarlarsanız, bağlantı noktası numarası boş olarak ayarlanır; Yani, bunu yaptığım her iki uçta da ayarlamanız gerekiyor. Sonra, bu hata oluşur ve neden kafamı çiziyorum. Bunun gerçek bir alan adı değil, 10.x.x.x kullanıyorum ile ilgisi var mı?

Teşekkür ederiz.

cevap

15

Daha spesifik bir alt etki alanından daha az belirli bir alana geçmek için yalnızca document.domain kullanabilirsiniz. Like ...

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

document.domain = 'mydomain.com' 

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

Daha spesifik bir alt etki alanına veya tamamen farklı bir etki alanına ayarlamak için kullanılamaz.

+0

Dolayısıyla, her ikisi de mydomain.com adresinde ikisini de değiştirdiysem, her iki sunucu da mydomain.com adresinde yer alırsa işe yarar mı? Sunucu1.subdomain.mydomain.com ve server2.subdomain.mydomain.com’um olduğunu varsayalım. Her ikisini de mydomain.com olarak ayarlarsam çalışır mı? – user717236

+1

@ user717236: Müşterinin sayfası "alanim.com" adresinden barındırılıyorsa, AJAX isteklerini "server1.subdomain.mydomain.com" veya "server2 ..." ve "document" kullanarak yapamazsınız. alan adı yardımcı olmaz. Fakat bunun tersi doğruysa ve müşterinin sayfası örneğin server1.subdomain.mydomain.com 'dan barındırılıyorsa, 'documentdomain' özelliğini kullanabilirsiniz, böylece 'mydomain.com' için istekte bulunabilirsiniz. . –

+0

Oh, anlıyorum. Bu yüzden, benim durumumda, bunun işe yaramayacağını düşünmüyorum, çünkü sayfalar hostname.subdomain.mydomain.com adresinde etkin bir şekilde barındırılıyor. Birisi serverX.mydomain.com ve diğeri serverY.subdomain.mydomain.com ise, onunla bir şeyler yapabilirdim. Çizim tahtasına geri dönün. Yardımın için teşekkürler. – user717236

3

Sadece document.domain değerini geçerli değerine veya geçerli ayarın süper etki alanına ayarlayabilirsiniz. Böylece, "foo.something.com" adresindeki bir sayfa, "bir şey.com" a ayarlayabilir, ancak "bir şey.else.com" olarak ayarlanamaz.

+0

Yardımlarınız için teşekkür ederiz. Evet, sanırım bunu biraz daha iyi anlıyorum. Bu iki ana bilgisayar, ayarlandığı gibi document.domain ile birbirleriyle iletişim kuramaz. Başka bir şey düşünmek zorundayım. Tekrar teşekkürler. – user717236