web-dev-qa-db-ja.com

コンソールでのIE DOM:7009エラー(デコードできません)での読み込みに失敗しました

IE(IE11で再現)で1ページに多数の画像をロードすると、一部の画像がロードに失敗し始め、コンソールに次の警告のようなものが表示されます。

DOM7009:URLで画像をデコードできません: '[some unique url]'。

ネットワークトラフィックを見ると、これらの各イメージに対してサーバーから受信した有効な応答があります。毎回同じ画像であるとは限りません。開発ツールを使用して画像を強制的にリロードする場合(例:いくつかの無関係なurlパラメーター "&test = 1"を含むようにurlを更新する)、エラーなしで通常にロード/レンダリングします。この動作をさまざまな種類の画像(jpegs/pngs、下に含まれるpngの例)で再現しました。これは、画像の数が増えるにつれて頻繁に発生するようであり、各画像のサイズと何らかの相関関係がある場合もあります。

何がこれを引き起こしているのかについての考えはありますか?潜在的な回避策はありますか?どんな助けも大歓迎です。

Sample PNG

37
Rob Quick

実際の問題は 別のStack Overflowの質問 で対処されているようです。ここでのすべての答えは、さまざまな方法で問題を回避しますが、ファイルが主張する形式ではないため、これはおそらく起こります。 nosniff が有効になっているため、ブラウザはこの問題を回避できず、間違った画像タイプをデコードしようとします。

つまり、ファイル拡張子が実際のエンコードと一致しません

26
lordscarlet

HTTPヘッダーでファイルがJPEGとして報告されたが、実際にはPNGであったという同様の問題がありました。ファイルに一致するようにファイルタイプを変更するか、「X-Content-Type-Options」ヘッダーを削除すると、問題が修正されました。

8
Richard Jones

IISでホストされているサイトでこの問題が発生しました。これは、X-Content-Type-Optionsヘッダーが親アプリケーションweb.configに次のように設定されているためです。

<system.webServer>   
 <httpProtocol>    
  <customHeaders>    
   <add name="X-Content-Type-Options" value="nosniff" />    
  </customHeaders>    
 </httpProtocol> 
</system.webServer>  

アプリケーションのweb.configで削除すると修正されました。

<remove name="X-Content-Type-Options" />  
8
user1069816

私が直面していた問題は同様でした。 Javaサーブレットリクエストを介してドキュメントのページとサムネイルを表示するWebアプリケーションがあり、ブラウザがPNG画像を送信するのに応答します。@ user1069816が言ったように、応答は「画像をデコードできません」という問題の原因:

X-Content-Type-Options: nosniff

私の場合、このヘッダーはSpring Securityによって導入されました。これに加えて XSS攻撃を回避するためのInternet Explorerのセキュリティメカニズム 、応答時にこのヘッダーを無効にする最も速い解決策は、Spring Securityのアプリケーションコンテキストファイルに次の行を置くことでした、headersセクション:

<http use-expressions="true" create-session="never" auto-config="true">
    <headers>
        <!-- this section disable put the header 'X-Content-Type-Options' -->
        <content-type-options disabled="true"/>
    </headers>

この問題はInternet Explorer 11でのみ発生していました。ChromeまたはFirefoxでは発生していません。

6
Rafael Fontoura

IE11で同じ問題が発生し、画像を読み込むとエラーが発生しました。

DOM7009: Unable to decode image at URL

他のすべてのブラウザでは、それは魅力のように動作します!!

少しの研究がついに次のような結論に達した後:

web.configファイル内::

  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-Frame-Options" value="Deny" />
        <remove name="X-Powered-By" />
        <add name="X-XSS-Protection" value="1" />
        <!--To resolve the user image not displaying in the chat and in the header for IE 11--> 
        <!--<add name="X-Content-Type-Options" value="nosniff"/>-->
      </customHeaders>
    </httpProtocol>
</system.webServer>

X-Content-Type-Options」を削除したコメント付きコードを参照してください。

4
Trilok Pathak

何らかの用途がある場合、WinJSアプリケーションでこれを見てきましたが、これはレンダラーがメモリ不足であることを報告する方法だと思います(不可解ではありますが!)

理由は、圧縮されたpngイメージ(たとえば500 KBですが、ピクセルサイズが大きい)を読み込むと、この問題が発生するからです。

20000 x 6000の画像でこれを試みると、このエラーが散発的に発生します。これは、それが20000 x 6000 x 4(480,000,000バイト)または〜480MBであるためだと推測しています。

これを14000 x 6000で試してみると、〜336MBになりそうですが、エラーはまだ発生していません。

35000 x 20000の画像でこれを試してみると、約2.8GBになります。

4
dougajmcdonald

このエラーも発生しました— IE 11.0.9600.18059。私のテストによると、それはタブによって消費されるメモリの量によるものでした(例:追加のDOM要素を追加するとメモリの使用量が増加します)。

メモリプロファイラを使用して、メモリ使用量が約1.5GBに達するとエラーが発生することがわかりました。これにより、次の奇妙さが発生しました。

  1. 一部の画像はロードされますが、レンダリングされません。画像がvisibility: hiddenに設定されているかのように、ページ内に空のスペースとして(正しい寸法で)表示されます。
  2. 一部の画像は読み込まれますが、デコードに失敗します。これらは、Xの付いた小さな黒いボックスとして表示されます。これらの画像は、コンソールにDOM7009エラーも表示します。
  3. Flash SWFはブラックボックスとして表示されます。
  4. その他のランダムな奇妙さ。

ページをリロードするたびに、異なる画像/ SWFが影響を受けます。

私にとっての解決策は、ページの設計方法を単純に調整することでした。したがって、IEが多くのメモリを消費することはありません。

4
ivanreese

画像が〜2.5MB(.jpg)のとき、この問題が発生しました。 540kbに縮小すると、問題は発生しなくなります。これは間違いなくIEメモリの問題です(または場合によっては発生する可能性があります)。

これは、私のWeb構成にX-Content-Type-Optionsに関連するものがなかったため、私にとって有効な唯一の修正です。

1
Lyall

基本的に画像ギャラリーであるページでこの同じエラーが発生し、各画像がサムネイルとして最大解像度でロードされていました。ページの重量は約220メガバイトでした。一部のサムネイルが読み込まれず、「URLで画像をデコードできません」というエラーが理由として表示されていました。

ただし、IEは、画像のURLを直接表示することにより、各画像を個別にロードできます。これは、画像のタイプ/エンコードに問題はなかったことを意味します。画像の場合、すべての画像をサムネイルとして読み込むことができませんでした(および読み込まれなかった画像はページが更新されるたびに変更されます)。

私の回避策は、ページに低解像度のサムネイルを表示し(ページの重さを220kbに変更)、サムネイルリンクを完全な高解像度画像に表示することでした。

配信する画像のサイズとファイルサイズを小さくできるかどうかを確認する価値があります。

1
pnairn

これを解決するために私が見つけた唯一の方法は、Apacheサーバー構成でブラウザによってこのルールを無効にすることです。

 BrowserMatch MSIE Explorer
 Header set X-Content-Type-Options nosniff env=!Explorer

それは私のために働くが、この解決策は私を好きではない。 Apacheサーバーで正しいMIMEタイプを書き直したいと思います。

私の問題は、URLに「captcha」文字列が含まれているが、設定できないことです。

SetEnvIf Request_URI ^(.*)captcha$ headerpng 
Header set "Content-type image/png" env=headerpng 

これはありませんt work. It's a little frustrating. It's a url so long and I thing that **SetEnvIf** doesntは最後まで読みました。

1
Pablo Luna

IE11でも同じ問題が頻繁に発生しますが、原因を特定することはできません。ただし、JavaScriptがクラッシュした直後に発生し始めます。私はimgurの問題ではなく、IE11の問題です。

私が問題から抜け出すことができた唯一の方法は、Explorerをクラッシュさせ、それをリロードするか再起動することです。

0
drew