SECURITY_ERR: DOM Exception 18 when applying document.domain on both sites. How do I resolve this?
cross-domain, domexception, javascript, same-origin-policy, user-agent
Solution
You can only use `document.domain` to change from a more specific sub domain to a less specific domain. Like...
console.log(document.domain); // server1.mydomain.com
document.domain = 'mydomain.com'
console.log(document.domain); // mydomain.com
It can't be used to set to a more specific sub domain or to an entirely different domain.
Problem
I have a page at an internal server, server1.mydomain.com/page.jsp and another page at a different internal server, 10.x.x.x:8081/page.aspx. On server1.mydomain.com, I set document.domain in page.jsp like this: ``` //page.jsp on server1.mydomain.com document.domain = document.domain; ``` When I issue an alert on document.domain, it comes up as server1.mydomain.com. On the 10.x.x.x server, I set document.domain in page.aspx, as a result, like this: ``` //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, an error pops up on the console: ``` SECURITY_ERR: DOM Exception 18: An attempt was made to break through the security policy of the user agent." ``` From what I understand, when you set document.domain, the port number is set to null; so, you have to set it on both ends, which I did. Then, this error occurs and I'm scratching my head why. Does this have anything to do with the fact I'm using 10.x.x.x and not an actual domain name? Thank you.