0

GWTを分離しました-静的コードはCDNにあり、動的コードは別のサーバーにあります。このCORSフィルターをTomcat7で構成しましたが、正常に機能します。

http://software.dzhuvinov.com/cors-filter-installation.html

ただし、CookieをGWTおよびCORSで機能させるのにまだ苦労しています。

私は主にXSRF保護(および他のいくつかのもの)のためにそれを必要とします:

https://developers.google.com/web-toolkit/doc/latest/DevGuideSecurityRpcXsrf

XMLHttpRequestでwithcredentials=trueを設定する必要があるようです。

誰かがGWTでそれを行う方法を知っていますか?

4

1 に答える 1

0

デフォルトでは、Cookie は CORS で送信されません。それらが必要な場合は、属性をGWT で使用されるwithCredentials低レベルに設定する必要があります。XMLHttpRequest残念ながら、Java コードから設定する方法はありません。

簡単なハックはXMLHttpRequest.java、ソース ツリーで独自のバージョンを維持し (同じ名前空間を使用)、次のようにcreate()メソッドを変更することです。

private static native XMLHttpRequest create(String responseType) /*-{
  [...]
  xhr.withCredentials = true;
  return xhr;
}-*/;

注: サーバー側からは、このヘッダーも送信する必要があります。

Access-Control-Allow-Credentials: true

それ以外の場合、GWT で認証を処理する通常の方法は、認証情報で特別なヘッダーを使用し、サーバー側でそれを読み取ることです。

builder.setHeader("X-My-Authenticated-Header", "whatever");

編集: t.broyer が以下のコメントで指摘しているように、RequestBuilder.setIncludeCredentialsメソッドは 2.5.1-rc1 にあります。したがって、このリリースを使用している場合は、ビルダーを作成するときにこのメソッドを呼び出します。

于 2013-02-26T07:10:12.160 に答える