Wir POSTen eine AJAX-Anforderung an einen Server lokal ausgeführt wird, das heißtChrome Hinzufügen Origin-Header gleichen Ursprungs Anfrage
xhr.open("POST", "http://localhost:9000/context/request");
xhr.addHeader(someCustomHeaders);
xhr.send(someData);
Die Seite, dass dieses Javascript ausgeführt wird, wird auch von localhost serviert: 9000, dh das sieht völlig nach einer Anfrage mit derselben Herkunft aus.
Aus irgendeinem Grund setzt Google Chrome in der resultierenden Anfrage jedoch immer einen Origin-Header, was dazu führt, dass unser Server die Anfrage basierend auf der falschen Annahme, dass es sich um eine CORS-Anfrage handelt, blockiert.
Dies geschieht nicht in Firefox.
Außerdem senden weder Firefox noch Chrome eine OPTIONS Preflight-Anfrage, was verwirrend ist; Warum sollte ein Origin-Header ohne vorherige Preflight-Prüfung gesetzt werden, um sicherzustellen, dass der Origin- und der Custom-Header vom Server zugelassen sind?
Weiß jemand, was in diesem Fall vor sich geht? Missverstehen wir die CORS-Spezifikation?
Weitere Informationen finden Sie unter http://seclab.stanford.edu/websec/csrf/csrf.ppt. Hier wird erläutert, warum der Origin-Header für POST-Anfragen mit demselben Ursprung geeignet ist. Es ist ein CSRF-Schutzmechanismus. – user239558