Eine URL besteht aus vier Teilen, nehmen Sie als Beispiel www.2cto.com (der Standardport für http ist 80 und der Standardport für https ist 443. Wenn es sich um den Standardport handelt, kann er weggelassen werden Diese URL entspricht www.2cto.com:80
Protokoll: http
Host: www.2cto.com
Port: 80
Pfad : /
sogenannter Gleicher Ursprung bedeutet, dass das Protokoll, der Host und der Port dieser URL alle gleich sind. Die Domäne oder Domäne, über die wir sprechen, ist hier auch das gleiche >
Für die obige URL werden die folgenden Ergebnisse erhalten:
'
JavaScript kann den Wert der Host- und Portteile durch Festlegen des Dokuments ändern .domain. Wenn Sie dies tun, wird der festgelegte Wert als Same-Origin-Richtlinie überprüft, beispielsweise für http://blog.csdn.net/yanical und http://bbs.csdn.net/ kann das folgende Javascript ausführen:
[javascript] document.domain = "csdn.net ";
Danach sind die beiden Seiten dieselbe Quelle kann nicht auf andere Hauptdomänen wie http://www.csdn.net/ festgelegt werden. Für sina.com
sehen wir, dass nur der Host-Teil des Javascripts festgelegt ist, und Der Port-Teil wird tatsächlich nicht erwähnt, wenn das obige Javascript ausgeführt wird, und wird daher auf einen Nullwert gesetzt. net:81/yanical und http://blog.csdn.net/yanical, die Ports werden auf null gesetzt, sie werden homolog
Die gleiche Ursprungsrichtlinie wurde zuerst verwendet, um zu verhindern, dass js von einer Quelle abgerufen wird oder Ändern der Dokumentattribute einer anderen Quelle. Die Quelle von Javascript bezieht sich hier auf die Quelle der HTML-Seite, nicht auf die Quelle des Javascripts selbst.
Zum Beispiel gibt es zwei HTML- und zwei Javascript-Quellen test.html enthält einen Iframe, der auf Frame.html verweist, und test.html verweist auch auf zwei JS, von denen sich eines von der Javascript-Quelle von test.html unterscheidet versucht auch, frame.html
test.html:
[html] zu ändern.
document.write('------write from test.html ');
alert(document.getElementById('vFrame').contentDocument.body.innerHTML='----- -Frame von test.html überschreiben';
< ;/html> "-//W3C//DTD HTML 4.0 Transitional//EN"
< ;html> ;script>
document.write('------write from frame. html');
document .write('------write from otherdomain.js');
samedomain.js:
[javascript] document.write('---- - -write from samedomain.js');
Wir besuchen http://localhost/test.html und die Ausführungsergebnisse sind wie folgt:
Es ist ersichtlich, dass die Quellen von test.html und otherdomain.js zwar unterschiedlich sind, da otherdomain.js von test.html geladen wird, es sich jedoch immer noch um dieselbe Quelle handelt. Aber test.html und frame.html stammen nicht aus derselben Quelle und der Browser blockiert die Änderungsanforderung.
Jetzt wird die Same-Origin-Richtlinie auch verwendet, um zu bestimmen, ob ein XMLHTTPRequest (AJAX) zulässig ist. Eine Seite kann nur eine AJAX-Anfrage an den Server desselben Ursprungs initiieren.
Es ist zu beachten, dass sich die gleiche Ursprungsrichtlinie von Cookies geringfügig von der von JavaScript unterscheidet, d. h. Cookies ignorieren das Protokoll, also https://blog.csdn.net/yanical und http:// Blog. Die Cookies von csdn.net/yanical werden geteilt.