2014-06-18 31 views
14

È possibile applicare la condivisione di risorse di origine incrociata (CORS) in un profilo Liberty V8.5 di Websphere Application Server?Come definire CORS in Websphere Application Server Liberty Profile V8.5

Ho cercato il redbook ma non sono riuscito a trovare IBM menzionare nulla a riguardo. (http://www.redbooks.ibm.com/abstracts/sg248076.html?Open)

E 'non possibilità per me di impostare le intestazioni a livello di codice in questo modo:

Access-Control-Allow-Origin: * 

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

+0

Attualmente sto investigando su http://software.dzhuvinov.com/cors-filter-installation.html: sto prendendo piede (vedo le mie stampe nel servizio web)! L'unico problema è che il servizio non ritorna mai e il mio browser continua ad attendere la risposta ... –

+0

Per favore, vedi la mia risposta per il supporto CORS ufficiale in Liberty. – ArthurDM

risposta

9

È necessario aggiungere in seguito vasetti per la cartella WEB-INF/lib:

Nella tua web.xml si deve aggiungere le seguenti regole:

<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

Non pensare che funzioni se la guerra contiene solo html e javascript. Esiste un altro modo per configurare il server WebSphere liberty per abilitare i COR per questo caso. – DarVar

+0

@DarVar Hai già risolto il problema? Se servi solo HTML e JavaScript, non avrai questi problemi. Solo quando stai invocando un webservice su un altro socket. – GuyT

+0

Il metodo ha funzionato ma sfortunatamente nel mio caso la modalità di caricamento della classe deve essere modificata per farlo funzionare, il che non è desiderabile. Una spiegazione più dettagliata del metodo si trova qui. 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

Per chi è alla ricerca di una soluzione durante l'utilizzo di IBM WebSphere Application Server e alla ricerca di una risposta da applicare CORS. (Dovresti farlo a livello di programmazione) So che l'op sta cercando una risposta senza usare il codice java o altro ... Questo potrebbe essere utile a qualcun altro .. Scrivi un filtro che ti permetta di impostare le intestazioni di risposta a livello di programmazione. Come ad esempio:

public class YourFilter implements javax.servlet.Filter{ 

    @Override 
    public void doFilter(ServletRequest request,ServletResponse servletResponse , FilterChain chain) throws IOException, ServletException { 
     HttpServletResponse response = (HttpServletResponse) servletResponse ; 
     response.setHeader("Access-Control-Allow-Origin", "*"); 
     response.setHeader("Access-Control-Allow-Headers","Access-Control-Allow-Origin, X-Requested-With", bla,bla...); 
    } 
} 
5

A partire dal gennaio 2016 Beta (edit: e ora in Liberty 8559), WebSphere Liberty supporta nativamente CORS. Basta configurare il server.xml con le opzioni CORS desiderate, ecco un esempio:

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

L'attributo di dominio è per la radice dell'applicazione che si desidera questa configurazione da applicare a, il che significa che non avrà effetto sulle altre radici di contesto. Gli altri 7 attributi seguono esattamente le specifiche CORS ufficiali (https://www.w3.org/TR/cors/), quindi sono piuttosto auto-esplicativi.

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

1

di estendere al CORS da ArthurDM: Le pagine documentati in cui non spiegano abbastanza per me. Il mio setup è il seguente e voglio solo condividerlo con te:

  • Usa profilo Liberty 8.5.5.9. Quindi l'aggiunta di CORS al profilo di libertà non è più solo in beta.
  • Utilizzare il batch JavaEE e collegare il batch per inserire tutti i suoi dati nel repository (non in memoria).
  • Volevo utilizzare la funzione batchManagement-1.0 per il resto del batch fornito con esso.
  • Angolare 1.

Alla fine la seguente impostazione CORS ha fatto il trucco:

<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" /> 

Buona fortuna, e spero che aiuta.