Hebikuzure's Tech Memo

2009年2月22日

file:// URL を使用した場合にページを表示できない

Filed under: Internet Explorer — hebikuzure @ 10:07 AM

MSKB 306094
file:// URL を使用した場合にページを表示できない
http://support.microsoft.com/kb/306094/ja


Internet Explorer ではページを表示する際のプロトコル スキームとして通常の http / https だけでなく、file:// というスキームも利用できる。このスキームが指定された場合、リソースが Web サーバーではない単なる共有フォルダ (やローカル フォルダ) であっても、通常のファイル アクセスを行ってページを表示する事ができる。しかしこの技術情報に記載されているように、特定の条件が満たされる場合、file:// ではページを表示する事ができない。

  1. file:// URL の参照先が共有フォルダやフォルダへの UNC 名ではなく、ファイル自体への UNC 名である
    (file://Share\Path\Foo のようなフォルダへの参照ではなく、file://Share\Path\Foo\Bar.html のようなファイルの URL である)
  2. Internet Explorer を実行しているユーザーのアカウントに、URL のファイルが保存されているフォルダへのアクセス権が無い
  3. Internet Explorer [インターネット オプション] – [詳細設定] タブの [HTTP エラー メッセージを簡易表示する] チェック ボックスがオンになっている

この場合「ページを表示できません。サーバーが見つからないか、または DNS エラーです。」というエラーが表示され、ページは表示できない。

表示できない理由は技術情報にも書かれているが、要するに Internet Explorer が SMB の認証エラーに対応していないからだ。上記のように file:// では HTTP リクエストではなく通常のファイル アクセスが行われるので、共有フォルダに対しては SMB を使ったアクセスが行われる。Windows エクスプローラーから共有フォルダに SMB でアクセスし、(アクセス権が無くて) 認証エラーになった場合は、アクセスに使用するユーザー名とパスワードの入力を求めるダイアログが表示され、ログオン ユーザーとは別の資格情報を入力する事ができる。
しかし Internet Explorer では、HTTP アクセスでサーバーから認証エラー (HTTP 401)  を受け取った場合とは異なり、SMB のエラーを期待通りにハンドリングできず、結果として一般的なエラー メッセージが表示される。

回避策は「file:// URL ではなく http:// URL を使用します。」と書かれているが、共有フォルダをホストしているサーバーによっては http プロトコルを処理する事、要するにそのサーバーで Web サーバーを立ち上げる事ができない場合もあり、必ずしも現実的ではない。現実的にはユーザーにアクセス権を与えることになるだろう。

広告

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com で無料サイトやブログを作成.

%d人のブロガーが「いいね」をつけました。