web-dev-qa-db-ja.com

Websphere Application Server Liberty ProfileV8.5でCORSを定義する方法

Websphere Application Server Liberty Profile V8.5でクロスオリジンリソースシェアリング(CORS)を適用することは可能ですか?

レッドブックを検索しましたが、IBMがそれについて何も言及していないことがわかりました。 ( http://www.redbooks.ibm.com/abstracts/sg248076.html?Open

プログラムで次のようにヘッダーを設定することはnotの可能性です。

Access-Control-Allow-Origin: *

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

14
Niek Vandael

次のjarファイルをWEB-INF/libフォルダーに追加する必要があります。

web.xmlに、次のルールを追加する必要があります。

<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>
9
GuyT

2016年1月のベータ版(編集:現在はLiberty 8559)以降、WebSphereLibertyはCORSをネイティブにサポートしています。必要なCORSオプションを使用してserver.xmlを構成するだけです。例を次に示します。

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

ドメイン属性は、この構成を適用するアプリケーションルート用です。つまり、他のコンテキストルートには影響しません。他の7つの属性は、公式のCORS仕様( https://www.w3.org/TR/cors/ )に正確に従っているため、かなり自明です。

ベータ版へのリンク: https://developer.ibm.com/wasdev/blog/2016/01/15/beta-websphere-liberty-and-tools-january/

6
ArthurDM

ArthurDMからCORSに拡張するには:文書化されたページでは、十分に説明できません。私の設定は次のとおりです。それをあなたと共有したいと思います。

  • Liberty Profile8.5.5.9を使用します。したがって、リバティプロファイルへのCORSの追加は、ベータ版ではなくなりました。
  • JavaEEバッチを使用し、バッチを接続して、すべてのデータを(メモリではなく)リポジトリに配置します。
  • 付属のバッチの残りのAPIにbatchManagement-1.0機能を使用したかったのです。
  • Angular1。

最終的に、次のcors設定でうまくいきました。

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

頑張ってください、そして私はそれが役立つことを願っています。

1
King Nike

IBM Websphere Application Serverを使用しているときに回避策を探していて、CORSを適用するための答えを探している人向け。 (これはプログラムで行う必要があります)私は、opがJavaコードなどを使用せずに答えを探していることを知っています...これは他の誰かに役立つかもしれません..あなたができるフィルターを書くプログラムで応答ヘッダーを設定します。

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...);
    }
}
0
Deniz D.