Frage

Eine einfache Get -Anfrage ohne benutzerdefinierte Header. Die Antwort wird wie erwartet zurückgegeben. Die Daten im Körper sind zugänglich, aber nicht die Header.

Wenn ich versuche, auf den "etag" -Header zuzugreifen, stellen Browser eine Ausnahme an:

Weigerte sich, einen unsicheren Header "etag" zu bekommen

Chrome, Safari und Firefox verhalten sich alle gleich. Ich habe es nicht auf IE getestet.

Was vermisse ich hier?

War es hilfreich?

Lösung

Bei Verwendung von CORs werden nur einfache Reaktionsüberschriften freigelegt. Einfache Reaktionsüberschriften sind definiert hier. ETag ist keine einfache Reaktionsüberschriften. Wenn Sie nicht-einfache Header enthüllen möchten, müssen Sie die festlegen Access-Control-Expose-Headers Header wie so:

Access-Control-Expose-Headers: ETag

Beachten Sie jedoch, dass ich Fehler in Chrome, Safari und Firefox bemerkt habe, die verhindern, dass nicht-einfache Header korrekt ausgesetzt werden. Dies kann inzwischen behoben werden, ich bin mir nicht sicher.

Sie sollten keine Preflight-Anfrage durchführen müssen, da Preflight nur für nicht-post-/post-HTTP Anfrage Header (und Sie fragen nach Antwort Header).

Andere Tipps

Haben Sie jemals versucht, AJAX 2.0 (Cross -Domain Sharing) eine Methodik ist, die von W3C ziemlich ausgebracht wurde: http://www.w3.org/tr/xmlhttprequest2/#ref-cors

Es gibt auch eine andere Möglichkeit, dies zu tun, namens JSON-P, es ist wie eine JSON-Anfrage, aber Sie können es für Cross-Domains verwenden: http://en.wikipedia.org/wiki/jsonp

Beide können für die Site -Eigentümer sehr gefährlich sein, wenn sie nicht korrekt eingerichtet sind. Seien Sie also vorsichtig, wenn Sie es verwenden.

PS] Ich bin mir nicht sicher, ob dies hilfreich ist: http://www.w3.org/protocols/rfc2616/rfc2616-sec14.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top