8

私は最近、Tomcat にデプロイされた単純な Web アプリを作成しました。このアプリは、ログインしたユーザーにセッションが与えられる、かなり標準的なセッション ベースのセキュリティを使用します。

セッションは Firefox と Chrome で正常に動作しますが、IE の URL で jsessionid を使用する必要があり (7 と 8 でテスト済み)、中程度のプライバシーに設定されています。IE 8 で、「すべてのサード パーティの Cookie を許可する」と「すべてのセッション Cookie を許可する」を設定して、Cookie の処理を​​上書きしようとしましたが、さいころはありません。ただし、ローカル マシンで Tomcat を実行すると、IE は Cookie を受け入れ、セッションは問題なく動作します。

次に、HTTP ヘッダーについてです。

Chrome から、ログインしているユーザーがセッションを取得します

GET http://devl:8080/testing/ HTTP/1.1
Host: devl:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1036 Safari/532.5
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
P3P: CP="NON CURa ADMa DEVa TAIa OUR BUS IND UNI COM NAV INT STA"
Set-Cookie: JSESSIONID=9280023BCE2046F32B13C89130CBC397; Path=/testing
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Content-Length: 2450
Date: Fri, 26 Mar 2010 14:14:40 GMT

GET http://devl:8080/testing/logout HTTP/1.1
Host: devl:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1036 Safari/532.5
Referer: http://devl:8080/testing/
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: JSESSIONID=9280023BCE2046F32B13C89130CBC397

...

IE 8 以降、標準の中レベルのセキュリティとプライバシー -

GET http://devl:8080/testing/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC; Tablet PC 2.0)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Host: devl:8080
Connection: Keep-Alive

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
P3P: CP="NON CURa ADMa DEVa TAIa OUR BUS IND UNI COM NAV INT STA"
Set-Cookie: JSESSIONID=192999F922D6E9C868314452726764BA; Path=/testing
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Content-Length: 2450
Date: Fri, 26 Mar 2010 14:32:34 GMT

GET http://devl:8080/testing/logout HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Referer: http://devl:8080/testing/;jsessionid=6371A83EFE39A46997544F9146AA5CEA
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC; Tablet PC 2.0)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: devl:8080

...

P3Pかなと思ったのですが、コンパクトポリシーを追加しても何も変わりません。これは標準的な Tomcat セッションなので、これまでに同じ問題を抱えている他の人を見つけることができなかったことに本当に驚いています。誰にもアイデアはありますか?

編集 2010 年 4 月 3 日 -

これを明確にしなかった場合は申し訳ありません-IEの他の複数のインスタンスから試しました-廊下の同僚など。

編集 2010 年 4 月 3 日 -

また、すべての Cookie のプロンプトをオンにしようとしましたが、プロンプトが表示されません。Fiddler を使用して「Set-Cookie」ヘッダーにドメインを設定しても、違いはありませんでした。

4

11 に答える 11

9

私はこの正確な問題に遭遇し、しばらく掘り下げて、これを見つけました:

http://forums.iis.net/p/1147938/1879164.aspx

これは、アンダースコアが含まれているドメイン名がWindows Server、Tomcat、およびIEで問題を引き起こすことを示しています

これで問題が解決するかどうかはわかりませんが(この時点では、おそらく気にしないでしょう)、次の人が問題を解決できる可能性があります。

于 2010-08-05T21:11:40.607 に答える
5

問題: IE8 は、私が構築したサイトで Cookie の受け入れを拒否しましたが、Firefox と IE7 は問題なく動作し、何年もの間そうしていました - これは安定したコードでした。

解決策 (私にとって): 私のサーバーは、クライアント マシンとは異なるタイム ゾーンにあります。STUPID、ばかげた IE8 は巧妙になろうとし、20 分の寿命で (ローカル クライアント マシンに保存された) Cookie の受け入れを拒否します。私のPHPコードはテキストブックからそのままだったので、次のようになります。

setcookie($name,$value,time()+1200);

しかし、たとえば次のように変更すると問題なく動作します-

setcookie($name,$value,time()+120000);

これにより、20 分後に Cookie が消滅するという問題が残りますが、少なくともユーザーは IE8 で Web サイトを使用できるようになりました。他の誰かに役立つかもしれない場合に備えて、この情報を渡します。

于 2010-08-10T11:36:52.370 に答える
1

サーバーの時刻が正しいことを確認しましたか?

最近、IEがCookieを適切に受け入れないという同様の問題が発生しました。多くの頭を悩ませた後、サーバーとクライアントマシン間の時差が非常に大きかったため、IEがCookieの受け入れを拒否したことが判明しました。ただし、これはApacheで行われました。

于 2010-03-31T10:52:56.997 に答える
1

私はLexicoreに同意します-WebサーバーからのCookieプロトコルは正しく見えるので、IEには何かがあります。IEがCookieを拒否する理由をよりよく理解すれば、問題に対処する方法を理解するのが簡単になります。または、ブラウザインスタンスの問題ではなく、サーバーの問題を確認するために、IEでサイトにアクセスするように友人に依頼してください。

IEとCookieを使用してデバッグするために確認する必要があることがいくつかあります。残念ながら、確認するオプションがたくさんあります。これらの項目のいくつかが基本的であると思われる場合は申し訳ありません-私はただ仮定をするつもりはありません。これについては、IE8.0でフォローしています。

まず、IEでターゲットサイト(http:// devl:8080 / tests /)を参照します。それで:

  1. IEが分類するゾーンを確認します' http:// devl:8080 /tests/ '。(これは、ローカルマシン上のTomcatで動作する理由を説明している可能性があります。)ゾーンはブラウザの下部バーに表示され、「インターネット」と表示されている可能性があります。代わりに「ローカルイントラネット」、「信頼済みサイト」、または「制限付きサイト」と表示されている場合、これは問題の一部である可能性があるため、質問を更新するか、インターネットとして分類されない理由を理解する必要があります。

  2. 下部のバー(おそらく「インターネット」)のゾーンインジケータをダブルクリックして、[セキュリティ]ダイアログを開きます。インターネットのセキュリティレベルは中〜高に設定されていますか?そうでない場合は、これが問題の一部である可能性があり、ユーザーに合わせてリセットする必要があります。

  3. 「インターネット」ゾーンを選択し、「カスタムレベル...」ボタンをクリックして「セキュリティ設定」ダイアログを開きます。[ユーザーデータの永続性]オプションが[有効]に設定されていることを確認します。「Userdatapersistence」オプションは、「Miscenllaneous」セクションのオプションリストの下部1/4にあります(次のセクション「Scripting」のすぐ上のセクションの下部近く)。

  4. 各ダイアログで[OK]をクリックして、両方を閉じます。

  5. メニューバー(有効になっていない場合は有効)で、[ツール]>[インターネットオプション]をクリックします。「プライバシー」タブを選択します。ここでいくつか試してみたとのことですが、サイトがインターネットゾーンにない場合、または「サイトごとのプライバシーアクション」例外リストにある場合は、これらの変更がサイトに影響を与えない可能性があるため、確認することをお勧めします。

  6. [プライバシー]タブのプライバシー設定は[中]に設定されていますか?そうでない場合は、デフォルトにリセットすることをお勧めします。

  7. [サイト]ボタンをクリックして、[サイトごとのプライバシーアクション]ダイアログを開きます。あなたのdev1サイトはリストされていますか?もしそうなら、それを削除します。[OK]をクリックして、ダイアログを閉じます。または、dev1サイトに常にCookieを許可するように強制することもできます。

  8. 「詳細」ボタンをクリックします。[自動Cookie処理を上書きする]がオンになっていますか?その場合、ユーザーに合わせてオフにすることをお勧めします。または、チェックして[常にセッションCookieを許可する]をオンにしてみてください。

  9. 各ダイアログで[OK]をクリックして、両方を閉じます。

  10. ブラウザがまだターゲットサイトにあることを確認します(' http:// devl:8080 / tests / ')。[表示]>[Webページのプライバシーポリシー...]をクリックして、[プライバシーレポート]ダイアログを表示します。リストには「http:// dev1:8080 / tests /」が含まれていますか?Cookieの列には、「http:// dev1:8080 / tests /」の「承認済み」が示されていますか?

  11. リストから「http:// dev1:8080 /tests/」を選択します。[概要]をクリックして、プライバシーポリシーを表示します。あなたのサイトに1つ設定すると、ここに表示されます。それ以外の場合は、プライバシーポリシーが見つからなかったというメッセージが表示されます。ダイアログの下部を見て、サイトがCookieを使用するように設定されていることを確認します(比較、常に許可、または許可しない)。

これがあなたに追求するいくつかのアイデアを助けたり与えたりすることを願っています。


参照:

于 2010-04-02T02:08:28.137 に答える
1

P3P に関するこのフォーラムは関連があるようです。

また、セッション Cookie のドメインと有効期限の設定を検討しましたか?

于 2010-04-02T17:59:31.913 に答える
1

標準の HTTP ポート (80) を使用してみてください。IE のプライバシー/セキュリティに関する URL のポート番号の問題について何度か読んだことがありますが、現時点では関連するリンクが見つからないようです。

于 2010-04-01T23:20:57.773 に答える
0

あなたが言っていることから、この問題は IE でのみ見られ、オフィスのコンピューターのみを使用しているようです。IT 部門がすべてのオフィス コンピューターに何らかの「セキュリティ スイート」をインストールしていますか? もしそうなら、一時的に無効にすることはできますか? 多くの場合、これらのタイプのアプリケーションは IE にフックし、その HTTP スタックをいじります。そのようなソフトウェアがインストールされている場合、「クリーン」インストールまたはテストできる会社以外のコンピューターはありますか?

于 2010-04-03T15:59:33.180 に答える
0

dev1 サイトはどのセキュリティ ゾーンの一部ですか? IE は、ゾーン (およびゾーンの構成方法) に応じて、Cookie やその他の多くのセキュリティを異なる方法で処理します。

たとえば、dev1 サイトを信頼済みサイトの一部として明示的に設定してみて、何が起こるかを確認してください。

ゾーン:

Internet
Local Intranet
Trusted Sites
Restricted Sites

また、Cookie は /testing パスに制限する必要がありますか? / に設定してみて、違いが生じるかどうかを確認してください。

于 2010-04-01T23:26:03.643 に答える
0

サーバーの完全修飾ホスト名を使用してみます。MSIE は、ドメインのないホスト名を「ローカル イントラネット」にあるものとして扱い、セキュリティを別の方法で処理します。

具体的には、次の代わりに:

http://devl:8080/testing/

次のようなものを使用してみてください:

http://devl.mydomain.com:8080/testing/
于 2010-04-01T23:29:19.963 に答える
0

Cookie が設定されているため、これは明らかに Tomcat とは何の関係もありません。IE によって受け入れられないだけです。これは IE のセキュリティ上の問題に違いありません。たぶん、この MS の記事はそれを調整するのに役立つでしょう。

于 2010-03-29T12:31:46.397 に答える
0

サーバーの時刻は 14 分ずれていました (正しいタイム ゾーン EST でした)。

サーバーの時刻を正しい時刻に設定すると、Cookie が再び機能し始めます。

エド

于 2020-11-19T15:49:41.920 に答える