2014-06-18 3 views
14

Ist es möglich, Cross-Origin-Ressourcenfreigabe (CORS) in einem WebSphere Application Server Liberty-Profil V8.5 anzuwenden?So definieren Sie CORS im WebSphere Application Server Liberty-Profil V8.5

Ich suchte das Redbook, aber konnte nicht finden, dass IBM etwas darüber erwähnt. (http://www.redbooks.ibm.com/abstracts/sg248076.html?Open)

Es ist nicht Möglichkeit für mich die Header programmatisch wie folgt festgelegt:

Access-Control-Allow-Origin: * 

(http://enable-cors.org/server.html)

+0

Ich untersuche derzeit http://software.dzhuvinov.com/cors-filter-installation.html: Ich bekomme durch (ich kann meine Drucke im Webservice sehen)! Das einzige Problem ist, dass der Dienst nie zurückkehrt und mein Browser auf die Antwort wartet ... –

+0

Bitte sehen Sie meine Antwort für die offizielle CORS-Unterstützung in Liberty. – ArthurDM

Antwort

9

Sie haben folgende Gläser zu Ihrem WEB-INF/lib Ordner hinzufügen:

In Ihrem web.xml Sie haben folgende Regeln hinzufügen:

<filter> 
    <filter-name>CORS</filter-name> 
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class> 
</filter> 
<filter-mapping> 
     <filter-name>CORS</filter-name> 
     <url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

Glauben Sie nicht, dass das funktioniert, wenn der Krieg nur HTML und Javascript enthält. Gibt es eine andere Möglichkeit, den WebSphere Liberty Server so zu konfigurieren, dass CORs für einen solchen Fall aktiviert werden. – DarVar

+0

@DarVar Haben Sie Ihr Problem bereits gelöst? Wenn Sie nur HTML und JavaScript bereitstellen, haben Sie diese Probleme nicht. Nur wenn Sie einen Webservice auf einem anderen Socket aufrufen. – GuyT

+0

Die Methode funktionierte, aber leider muss in meinem Fall der Klassenlademodus geändert werden, um ihn zum Laufen zu bringen, was nicht wünschenswert ist. Eine ausführlichere Erklärung der Methode finden Sie hier. https://clmpractice.org/2015/01/07/how-to-enable-cors-with-rational-team-concert-ccm-running-on-a-websphere-application-server-was-8-5/ –

0

Für diejenigen, die für dieses Problem zu umgehen suchen bei der Verwendung von IBM Websphere Application Server und auf der Suche nach einer Antwort CORS anzuwenden. (Sie sollten dies programmgesteuert tun) Ich weiß, dass das op nach einer Antwort sucht, ohne java code oder sonst ... zu verwenden. Schreiben Sie einen Filter, mit dem Sie Antwortüberschriften programmgesteuert einstellen können. Beispiele:

5

Ab der Version Januar 2016 (Bearbeitung: und jetzt in Liberty 8559) unterstützt WebSphere Liberty CORS nativ. Sie konfigurieren einfach die server.xml mit den CORS Optionen, die Sie wollen, ist hier ein Beispiel:

<cors domain="/sampleApp/path" 
    allowedOrigins="https://alice.com:8090" 
    allowedMethods="GET, DELETE, POST" 
    allowedHeaders="Accept, MyRequestHeader1" 
    exposeHeaders="MyResponseHeader1" 
    allowallowCredentials="true" 
    maxAge="3600" /> 

Die Domain-Attribut ist für die Anwendung Wurzel, die Sie diese Konfiguration, angewendet werden soll, was bedeutet, es nicht beeinflussen andere Kontextwurzeln. Die anderen 7 Attribute folgen genau der offiziellen CORS-Spezifikation (https://www.w3.org/TR/cors/), also sind sie ziemlich selbsterklärend.

Link zu beta: https://developer.ibm.com/wasdev/blog/2016/01/15/beta-websphere-liberty-and-tools-january/

1

zum CORS von ArthurDM zu erweitern: Die dokumentierten Seiten, auf denen nicht genug für mich zu erklären. Mein Setup ist das Folgende und ich möchte es nur mit Ihnen teilen:

  • Liberty Profil verwenden 8.5.5.9. Das CORS-Zusatzprofil zum Liberty-Profil ist also nicht mehr in der Beta-Version.
  • Verwenden Sie den JavaEE-Batch und verbinden Sie den Batch, um alle Daten in das Repository zu schreiben (nicht im Speicher).
  • Ich wollte BatchManagement-1.0-Funktion für den Rest API Batch verwenden, die mit ihm kommt.
  • Schräg 1.

Schließlich wird die folgende cors Einstellung hat den Trick:

<cors domain="/ibm/api" 
     allowedOrigins="http://localhost:9080" 
     allowedMethods="GET, POST, PUT, DELETE" 
     allowedHeaders="Accept, Accept-Language, Content-Language, Content-Type" 
     exposeHeaders="Content-Type" 
     allowCredentials="true" 
     maxAge="3600" /> 

Viel Glück, und ich hoffe, es hilft.

Verwandte Themen