GEDOPLAN
Jakarta EE (Java EE)

CORS : Wenn die Same-Origin-Policy uns im Weg steht

Jakarta EE (Java EE)

Die Same-Origin-Policy ist ein Sicherheitsmechanismus der verhindert das Skripte auf Seiten und Ressourcen zugreifen die auf einem anderen Server gehostet werden. Damit wird verhindert, dass manipulierte Webseiten im „Namen des Benutzers“ unbemerkt Anfragen abschicken.

CORS

 

Nun gibt es aber durchaus Szenarien die genau eine solche Konstellation von Zugriffen benötigen, z.B. wenn ein AngularJS / JavaScript Client auf zentral gehostete Service-Schnittstellen zugreifen soll.

Neben der Möglichkeit JSONP Abfragen zu erstellen gibt es im W3C Standard eine Alternative:

CORS; Cross-Origin-Resource Sharing

Die Grundidee ist einfach: ein Server muss das Aufrufen seiner Seiten durch Scripte anderer Domains explizit erlauben indem er dem Response-Header das Attribut: „Access-Control-Allow-Origin“ hinzufügt. In diesem Attribut kann sowohl eine Wildcard verwendet werden, als auch explizit bestimmte Domains angegeben werden die solche Request stellen dürfen:

  • Access-Control-Allow-Origin: *
  • Access-Control-Allow-Origin: http://domain1.com, …

CORS und Java EE

Um dies im Java EE Umfeld einzusetzen reicht es also den Response-Header mit den entsprechenden Werten an zu reichern. Neben dem Schreiben eines eigenen Filters (oder im Kontext von JAX-RS, das Bereitstellen eines Providers) gibt es auch eine fertige Lösung die dank Maven schnell Einsatzbereit ist:

(pom.xml)
<dependency>
    <groupId>com.thetransactioncompany</groupId>
    <artifactId>cors-filter</artifactId>
    <version>2.5</version>
</dependency>
(web.xml)
<filter>
    <filter-name>CORS</filter-name>
    <filter-class>
        com.thetransactioncompany.cors.CORSFilter
    </filter-class>

    <!-- '*' ist auch der Default -->
    <init-param>
        <param-name>cors.allowOrigin</param-name>
        <param-value>*</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>CORS</filter-name>
    <url-pattern>/examplepath/*</url-pattern>
</filter-mapping>

CORS_resp

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Kurse

weitere Blogbeiträge

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!