none
hoge.aspx/がリクエストできるのが疑問 RRS feed

  • 質問

  • IIS7.5+ASP.NET(.NET framework 3.5)という環境で使用しています。

    私が無知なだけだとは思うのですが、
    Webサイトのルート直下に「hoge.aspx」というASPXファイルがあるとき、ブラウザから
    http://localhost/hoge.aspx/
    (最後のスラッシュがポイントです)
     といったリクエストが普通にファイルhoge.aspxに対して通ってしまう(HTTP Status=200)理由がわかりません。
     (もちろん、hoge.aspxというディレクトリはありません)

     末尾スラッシュの「hoge.aspx/」は、hoge.aspxという「ディレクトリ」を指すのではないのでしょうか?


    magmagg


    • 編集済み MAGMAG 2013年4月3日 14:21
    2013年4月3日 8:31

回答

  • > といったリクエストが普通にファイルhoge.aspxに対して通ってしま
    > う(HTTP Status=200)理由がわかりません。

    http://localhost/hoge.aspx/ を要求した場合、200 ではなくて 301 (Moved Permanently) が帰ってきませんか?

    帰ってきた 301 応答のヘッダの Location に 正しい URL(今回の場合 http://localhost/hoge.aspx)が指定され、ブラウザは再度その URL で GET 要求をかけ、その応答が 200 になると思いますが。

    • 回答としてマーク MAGMAG 2013年4月4日 6:55
    2013年4月4日 0:09

すべての返信

  • > といったリクエストが普通にファイルhoge.aspxに対して通ってしま
    > う(HTTP Status=200)理由がわかりません。

    http://localhost/hoge.aspx/ を要求した場合、200 ではなくて 301 (Moved Permanently) が帰ってきませんか?

    帰ってきた 301 応答のヘッダの Location に 正しい URL(今回の場合 http://localhost/hoge.aspx)が指定され、ブラウザは再度その URL で GET 要求をかけ、その応答が 200 になると思いますが。

    • 回答としてマーク MAGMAG 2013年4月4日 6:55
    2013年4月4日 0:09
  • SurferOnWww様ありがとうございます。
    Fiddlerを使って確認したところ、301遷移は行っていない様子でした。

    で、自分なりに調べてみたのですが、どうやら/以降(あるいはその前も含めて?)は
    「拡張パス情報」(正式名称かは不明)で、
    一種のリクエストに付随するパラメタのようなもの?のようです。

    URLのhoge.aspxまでの時点で、リクエスト対象は定まり、
    今回のIISの動きである普通にhoge.aspxを返すことは正当のようです。

    URLの?より前はドキュメントのパスである、という間違った認識だったので、
    大変勉強になりました。

    お騒がせしました。


    magmagg

    2013年4月4日 6:52
  • すみません、勘違いしていました。リダイレクトされるのは以下のケースでした。

    [IIS] 終了スラッシュのないフォルダが要求されると自動的にリダイレクトされる
    http://support.microsoft.com/kb/298408


    IIS7 で試した限りですが、ファイルの場合は、終了スラッシュの有無に関わらず、200 で応答が帰ってきましたす(リダイレクトはされません)。

    2013年4月4日 8:41