4

私のアプリケーションはRemoteServiceServlet.checkPermutationStrongName()、X-GWT-Permutation HTTP ヘッダーがHttpServletRequest. エラーが発生すると、ログ ファイルに次の行が表示されます。

WARNING: doUnexpectedFailure was invoked.
java.lang.SecurityException: Blocked request without GWT permutation header (XSRF attack?)

この問題は、Firefox 3.x および 4.0 のホスト モードと Web モードの両方で発生しています。

Live Headers を実行しましたが、HTTP ヘッダーが実際にありません。

アプリケーションはバニラ GWT RPC です。

何か案は?

失敗ヘッダー

http://127.0.0.1:8888/org.drools.guvnor.Guvnor/guvnorService

POST /org.drools.guvnor.Guvnor/guvnorService HTTP/1.1
Host: 127.0.0.1:8888
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.15) Gecko/20110303 Ubuntu/10.10 (maverick) Firefox/3.6.15
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 154
Content-Type: text/x-gwt-rpc; charset=utf-8
Referer: http://127.0.0.1:8888/org.drools.guvnor.Guvnor/Guvnor.html?gwt.codesv...
Cookie: standalone_usage=true
Pragma: no-cache
Cache-Control: no-cache


7|0|4|http://127.0.0.1:8888/org.drools.guvnor.Guvnor/|
6808FDC8A4FA3491026441B59E4DB72A|
org.drools.guvnor.client.rpc.RepositoryService|subscribe|1|2|3|4|0|

HTTP/1.1 400 Bad Request
Content-Type: text/plain;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Wed, 23 Mar 2011 20:11:04 GMT
Server: Apache-Coyote/1.1
Connection: close

成功ヘッダー

http://127.0.0.1:8888/org.drools.guvnor.Guvnor/guvnorService

POST /org.drools.guvnor.Guvnor/guvnorService HTTP/1.1
Host: 127.0.0.1:8888
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.15) Gecko/20110303 Ubuntu/10.10 (maverick) Firefox/3.6.15
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
X-GWT-Permutation: HostedMode
X-GWT-Module-Base: http://127.0.0.1:8888/org.drools.guvnor.Guvnor/
Content-Type: text/x-gwt-rpc; charset=utf-8
Referer: http://127.0.0.1:8888/org.drools.guvnor.Guvnor/Guvnor.html?gwt.codesv...
Content-Length: 154
Cookie: standalone_usage=true
Pragma: no-cache
Cache-Control: no-cache


7|0|4|http://127.0.0.1:8888/org.drools.guvnor.Guvnor/|
41FA1D8B82DBBBC875605A4A29670D99|
org.drools.guvnor.client.rpc.RepositoryService|subscribe|1|2|3|4|0|

HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json;charset=utf-8
Content-Length: 48
Date: Wed, 23 Mar 2011 20:15:38 GMT
Server: Apache-Coyote/1.1 
4

3 に答える 3

5

アプリケーションで同じ問題に直面しています。XmlHttpRequest オブジェクトに設定されている場合、FireFox 3.x は余分な要求ヘッダーを送信していないようです!

これに対する簡単な修正は、空の実装を持つサーバー側オーバーライド メソッド checkPermutationStrongName() の RPC 実装にあります。

@Override
protected void checkPermutationStrongName() throws SecurityException {
    return;
}

適切な修正を得るには、これを問題として FireFox に報告する必要があると思います。

于 2011-03-29T07:23:08.553 に答える
1

私の経験によると、FF は "X-" で始まるヘッダーをドロップすることがあります。

于 2011-04-04T22:17:20.897 に答える
0

このエラーは 3 月 30 日に初めてログに表示されたので、FF 4.0 に関連している可能性があります (FF4 は 22.03 に出荷されました)。GWT 2.0.4 から 2.1.1 への移行も数日前に行いました。これもヒントになります。私たちのアプリは、本番環境で 7 か月間徹底的にテストされています。たぶん、この情報は誰かを助けるでしょう。ブラウザのキャッシュで古い gwt アプリを検出する方法を探していました。アプリケーションがサーバーにデプロイされると、現在のビルドで生成された順列名を確認し、リストに格納します。すべての RPC リクエストは、それが送信された gwt 順列の存在についてチェックされます。このエラーで、私のメカニズムは爆破されました。

于 2011-05-18T13:26:22.030 に答える