6

クロムの問題に続いて...:

サーバー上で Grails 1.3.7 アプリケーションを実行しています。Chrome から静的コンテンツ (非動的 HTML ファイルなど) をリクエストすると、Chrome は 2 つの JSESSIONID-Cookie を作成することに気付きました。ログインウィンドウが表示されたときの最初のものと、ログインが成功した後の2番目のもの。ページを更新したり、別のリソースをリクエストしたりしたい場合は、再度ログインする必要があります。(Tomcat がこれら 2 つの Cookie を理解していないためだと思います)

FFで試してみましたが、FFはCookieを1つ作成するだけで、完全に機能します。また、アプリをローカルで実行しましたが、Chrome でも完全に動作します。したがって、tomecat の何かが間違っているに違いありません。

環境:

  • Grails-Application 1.3.7 (Spring-Security-Core 1.2.4 を使用)
  • Apache Tomcat 7 (Windows Server 2008 上)

私のhttpd.conf:

ProxyPass /manager http://myUrl:8080/manager
ProxyPass /myGrailsApp http://myUrl:8080/myGrailsApp
ProxyPassReverse /manager http://myUrl:8080/manager
ProxyPassReverse /myGrailsApp http://myUrl:8080/myGrailsApp

ProxyPass / http://myUrl:8080/myGrailsApp/frontend
ProxyPassReverse / http://myUrl:8080/myGrailsApp/frontend

前もって感謝します。

更新 1:

アプリを再ビルドして再デプロイし、Tomcat を再起動しました。

今気付きました: Chrome はもう 2 つの Cookie を生成しません。しかし、エラーは同じです。何かを更新または要求するたびに、JSESSIONID が変更され、再度ログインする必要があります。

tomcat-server を短時間見ると、大量のアクティブなセッションが表示されます - Chrome からのセッション...

更新 2:

サーバー上でローカルに試しました(クロムを使用):

  • localhost/myApp/frontend => Apache => 失敗
  • localhost:8080/myApp/frontend => Tomcat => OK

Apache が問題のようです (?)。

解決:

私はそれを手に入れました:) Grails *.gsp-Templatesは、リクエストごとに常に「favicon.ico」をリクエストしました。エラーが静的コンテンツ (html ファイルなど) に表示される理由は、Grails アプリケーションからそれらのリソースにリダイレクトするためです。

だから私は favicon.ico を正しい場所に置きました、そして今それは動作します:)

このエラーは Google Chrome に関するもので、FF と IE では問題なく動作しました。

4

1 に答える 1

7

私もこの問題に遭遇しました。何が起こっているのかを理解するのにしばらく時間がかかり (Wireshark を使ったスニッフィングを含む)、実行可能な解決策を見つけるのにさらに時間がかかりました。ついにこのスレッドを見つけましたhttps://vaadin.com/forum/-/message_boards/view_message/1216366

これは、Chrome/Safari (Webkit ブラウザー?) とリダイレクトされた Cookie の処理方法に問題があるようです。簡単な修正は、context.xml を含む私の春のプロジェクトの META-INF ディレクトリに追加することでした。

<?xml version='1.0' encoding='utf-8'?>
<Context sessionCookiePathUsesTrailingSlash='false'>
</Context>

次に、新しい war ファイルを再デプロイします。現在、すべてが意図したとおりに機能しています。

于 2012-03-20T11:31:09.030 に答える