none
URLエンコードされたURLの画像ファイルが表示されない RRS feed

  • 質問

  • はじめまして。よろしくお願いします。

    URLエンコードされたパスの画像が表示されなくなってしまい困っています。


    任意のサーバのIISで、URLアクセス可能なフォルダに以下の構成でファイルを置きます。

    +- test  [FOLDER]
        +- image.bmp
    +- test01.html


    「test01.html」の内容は以下の通りです。

    <HTTP>
    <HEAD>
    <META HTTP-EQUIV="Content-Type" Content="text/html; charset=Shift_JIS">
    <META HTTP-EQUIV="X-UA-Compatible" Content="IE=6">
    <TITLE>Test</TITLE>
    </HEAD>
    <BODY>

    <!-- これは表示される -->
    <img src="../test/image.bmp" />

    <br/>

    <!-- これは表示されない -->
    <img src="%2E%2E%2Ftest%2Fimage%2Ebmp" />

    </BODY>
    </HTML>


    最新の Windows Update (2019/02まで) が適用されたマシンのInternet Explorerから
    この test01.html にアクセスすると、2つめの「image.bmp」画像が表示されません。

    最新のWindows Updateが適用されていないマシンからだと、2つとも画像が表示されます。


    これは、Windows Updateの問題なのか、Internet Explorerの仕様が変わったからなのか、
    どちらなのでしょう?

    2つめの「Image.bmp」を表示させることができるInternet Explorerの設定項目があったり
    するのでしょうか。

    2019年3月6日 3:20

すべての返信

  • 同様なコードで試してみましたが、src="%2E%2E%2Ftest%2Fimage%2Ebmp" とした場合、ブラウザは先頭の %2E%2E%2F を ../ と解釈できず正しい URL に要求を出せないようです。

    以下は、Fiddler で要求・応答をキャプチャした画像で、#26 ~ #28 が Chrome 72.0.3626.121、#32 ~ #35 が Firefox 65.0.2、#112 ~ 114 が IE11 のものです。Result が 403 となっているのが問題の src="%2E%2E%2Ftest%2Fimage%2Ebmp" とした場合の要求・応答です。



    ブラウザとしてのあるべき姿は分かりませんし(RFC とか読めば分かるかもしれませんが)、「最新のWindows Updateが適用されていないマシン」の IE で何故問題なかったのかも分かりませんが、上の画像の通り src="%2E%2E%2F..." では自分が試した IE11, Chrome, Firefox はパスを解決できず、正しい URL に要求を出せないということは結果から明らかです。

    なので、解決策は %2E%2E%2F ではなくて ../ と書くことだと思います。


    2019年3月7日 3:19