2

ここにはかなりの詳細があります:

  1. コンテナー: JETTY 7.62 および 7.69 (両方を試した)
  2. 画像: jpg と png を試してみました
  3. ブラウザー: IE9 と Fiddler ツール

これで、標準の img タグなどを含む Web ページができました。キャッシュがクリアされた後に IE からページにアクセスすると、画像に 200 が返されます。

リクエストヘッダー:

Key Value
Request GET /cc/auth/images/test.jpg HTTP/1.1
Accept  image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5
Accept-Language en-US
User-Agent  Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Accept-Encoding gzip, deflate
Host    van-test-login9.login.dev.net:8443
Connection  Keep-Alive

応答ヘッダー:

Key Value
Response    HTTP/1.1 200 OK
Date    Thu, 28 Feb 2013 19:59:48 GMT
Content-Length  25926
Content-Type    image/jpeg;charset=UTF-8
Last-Modified   Thu, 28 Feb 2013 19:58:38 GMT

しかし、応答本文は空です..サーバー側で見る

[28/Feb/2013:19:59:25 +0000] "GET /cc/auth/images/test.jpg HTTP/1.1" 200 25926

そのため、ブラウザで画像が壊れて表示されます。JETTY のバージョンを切り替えて実験を行っていますが、違いはないようです。FF または Chrome を使用している場合、この問題は発生しません。さらに、ポート 8080 にアクセスしても、問題を再現することはできません。ということで、SSL/JETTY/IE の組み合わせのようです。

ブラウザにリソースの場所を入力して、画像に直接アクセスしようとすることで、問題を再現することもできます。Fiddler を使用して再作成することもできます。JETTY ログ、アプリケーションなどにエラーはありません。

また、これは断続的であることも付け加えておきます。一度 F5 キーを押し続けると、最終的には読み込みとレンダリングが行われ、キャッシュをクリアするまで壊れた画像は表示されません。

ここで何が起こっているのかを理解するための提案やアイデアを持っている人はいますか?

どうもありがとう

もう少し情報がありますが、これは web.xml にあります。

<filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

<filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

これを行ったのは、すべての送信が UTF-8 であることを確認するためです。認識していなかったのは、画像を含むすべての文字セットも配置されるということです!

画像を簡単に除外する方法はありますか?

4

1 に答える 1

1

これを解決する非常にJetty固有の方法は、書き換えハンドラーを使用して、応答ヘッダー内のその文字セットを削除することです。

http://wiki.eclipse.org/Jetty/Feature/Rewrite_Handler

私は本当にそれをお勧めするかどうかはわかりませんが、それは可能です。他のIEの歴史的な奇妙さのために、そこにはIE固有のルールさえあります。既存のパターンベースの書き換えルールを使用することも、独自のルールを作成することもできます。

ただし、アプリでこれに対処する方がよいでしょう。

于 2013-03-01T14:53:01.627 に答える