Heim  >  Artikel  >  Web-Frontend  >  Gleiche Ursprungsrichtlinie für JavaScript (Ajax) und Cookies

Gleiche Ursprungsrichtlinie für JavaScript (Ajax) und Cookies

高洛峰
高洛峰Original
2016-11-25 15:21:151377Durchsuche

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:

'Gleiche Ursprungsrichtlinie für JavaScript (Ajax) und Cookies

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.



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn