Oracle Fusion Middleware Blog

Deutsche Informationen rund um Oracle Fusion Middleware

CORS in JavaScript – Http Header auslesen

leave a comment »

Bei der Integration von REST oder anderen Servicequellen in JavaScript Anwendungen gibt es ein Problem im Umgang mit den Browser Sicherheitsmechanismen für JS. Nicht dass damit gemeint ist, dass JS unsicher wäre. Nein, im Gegenteil. Die Sicherheitsmechanismen der Browser verhindern den Zugriff auf andere als die angeforderte Quellen. Somit will man das Einschleusen fremder, potenziell sicherheitsgefährdender Inhalte in Webseiten über JavaScript verhindern. Das Problem ist nur, dass Datendienste, die man in seine JS Anwendung integrieren möchte, naturgemäß durch solche „fremden“ Quellen bereitgestellt werden. Es gibt als aus Sicht des Browsers zwei verschiedene Quellen, die angefragt und deren Inhalte über JS Code im Browser zusammegeführt werden sollen. Das ist dem Browser suspekt und die Sicherheitsmechanismen schlagen hier also zu. Das bedeutet, dass der Browser ohne weiteres Zutun eine clientseitige Einbindung solcher Services nicht ermöglicht. Um einen Lösungsweg für diesen Konflikt zu finden, hat man das Konzept des sogenannten „Cros Origin Request“ geschaffen (CORS = Cross Origin Request Support – Detail siehe hier). Das heißt der Service Endpoint muß explizit dem Browser die Verwendung des Server Response in fremden, domainübergreifenden Anwendungen erlauben. Das erfolgt über einen HTTP Response Header Parameter „Access-Control-Allow-Origin“, der die Domänengültigkeit des Service Response festlegt.

Bevor man nun anfängt, einen entsprechenden REST Service in seine JS Anwendung per JQuery o.ä. einzubinden, sollte man vielleicht vorher kurz überprüfen, ob serverseitig CORS unterstützt wird. Dazu schaut man in den HTTP Response Header, ob und wie der Parameter Access-Control-Allow-Origin gesetzt ist. Es reicht nicht, sich über ein Browser Plugin (z.B. Live Headers für Firefox, oder in den Developer Tools für Google Chrome) oder einen curl Aufruf etc. den Header anzuschauen. Browser, die CORS unterstützen, führen einen preflight request aus, um serverseitig zu überprüfen, ob sie den Response domänenfremd verarbeiten dürfen. Man muss sich also den preflight request mit anschauen und den HTTP Header Parameter dort suchen. Wie kommt man nun an den HTTP Header für diese Requestphase ran?

Dazu öffnet man am besten Google Chrome, geht auf die Seite http://api.jquery.com und öffnet mit Ctrl + Shift + I die Developer Tools. Dort wählt man „Console“ aus und ruft darin die gewünschte URL mit der $.get Methode auf, zum Beispiel $.get(„http://www.openligadb.de/api/getmatchdata/EM-2016/2016 „).

Anschließend schaut man in den Developer Tools auf den Network Traffic und sieht sich . Dort steht dann, ob und wie der Server CORS unterstützt. In diesem Falle gibt es serverseitig keine Einwände, die API in anderen Domänen zu verarbeiten.die Header für den Request der Service API an

<DM>

Written by fmtechteam

04/07/2016 um 10:47

Veröffentlicht in Detlef Müller, NodeJS, OracleJET

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: