ブラウザで UNC パスのリンクをオープンする方法

Redmine Advent Calendar の 23 日目の記事として、 Firefox などのブラウザから UNC パスのリンクをオープンする方法について書いてみようと思います。
直接的には Redmine と関係はないですが、 私は Redmine を使っていると 共有 PC などへのリンクを張りたくなることが結構あるので、 知っていると便利かなと思います。

file URI と UNC パス

PC 内にあるローカルファイルをブラウザなどで表示すると file://D:/home/foo.html といったアドレスになります。 このアドレスは file URI といって、 URI の表記の一つです。
これは RFC で定義されていて、ブラウザでちゃんと扱える表記法なのですが、 http:// のページに張られているローカルファイル(file://)へのリンクは、 メジャーなブラウザの多くではセキュリティ上、クリックしてもリンク先を表示できないようになっています。 (ローカルファイルからローカルファイルへのリンクは可能です)
ローカルファイルへのリンクを開きたいということはあまりないのですが、 ネットワーク上の共有 PC へのリンクを開きたいということは良くあります。
ネットワークコンピューターへのパスは UNC パス といって \\comp_name\share_name\foo\bar.doc のような書き方をします。
これを file URI を使って書くと file://///comp_name/share_name/foo/bar.doc というようになります。
ただし、file URI のパスなので、 基本的にリンク先を開くことは出来ません。 これをブラウザで開くためには、ブラウザごとに対応する必要があります。

ちなみに \ を / に直したり、スラッシュを 5 つ書いたり、とパスをリンク表記に直すのは 若干面倒ですが、 Redmine では Wiki UNC プラグイン を使うと Wiki マクロで UNC パスのリンクが簡単に作成できます。
前回の Redmine Advent Calendar の記事 で Wiki マクロの作成方法を書きましたが、 ちょっとしたコードですごく便利なプラグインが作れというよい例じゃないかとと思います。 私も TestLink Link プラグイン を作る際に参考にさせていただきました。

Internet Explore

IE の場合は簡単です。
IE では PC 内のローカルファイルへのリンクは開けませんが、 UNC パスへのリンクでは何もしなくてもそのままオープンすることが出来ます。

Firefox


Firefox も少し面倒ですが、設定を行うと開けるようになります。

Firefox で GUI が提供されていない設定を変更するには user.js に JavaScript のコードを記述します。
http://level.s69.xrea.com/mozilla/index.cgi?id=aboutconfig

まず、 user.js をおく設定ファイルの場所ですが、OS によって変わります。 Windows では以下のようなパスになっています。
%AppData%\Mozilla\Firefox\Profiles\(ランダム文字列).default
Windows ではアプリケーションデータをおく場所が変わるため、バージョンによっても変わってきます。 ただし、環境変数が設定されていて %AppData% という % をつかった記述で値を取得することが出来ます。 %AppData%\Mozilla\Firefox\Profiles といったパスをそのまま エクスプローラーのアドレスに書くとフォルダーが表示できます。

firefox_profile.png

次に user.js ファイルを作成して、設定ディレクトリにおきます。
すでに user.js ファイルが存在している場合は、追加書き込みしてください。 また、 prefs.js に追記しても問題ありません。
内容は次のような記述になります。
user_pref("capability.policy.policynames", "localfilelinks");
user_pref("capability.policy.localfilelinks.sites", "http://foo.bar.co.jp");
user_pref("capability.policy.localfilelinks.checkloaduri.enabled", "allAccess");
"http://foo.bar.co.jp" を Redmine などのリンクを許可したいページのサーバーにしておきます。 複数ある場合はスペースで区切って記述してください。

後は Firefox を再起動すると開けるようになります。
http://webos-goodies.jp/archives/50214493.html

Google Chrome

Google Chrome では 複雑な設定をしたい場合は起動オプションで指定します。
http://chrome.half-moon.org/43.html

私は確認できなかったのですが、 --allow-file-access-from-files オプションを指定すると file:// のパスが開けるようになるようです。

追記
Windows 7 でも Chrome がインストールできるようになったので、確認してみたところ、 UNC ファイルは開けませんでした。
よくみるとローカルファイルからローカルファイルへのリンクを開くことができるようにするためのオプションでした。

Safari, Oprera など他のブラウザ

そのほかの Safari, Oprera なども調べてみたのですが、 これらは開けるように設定を変更する方法はないようです。
http://www.websina.com/bugzero/kb/browser-file-url.html
(リンク先に書かれている右クリックで [新しいタブを開く] という方法も 今のバージョンのブラウザはほとんどできなくなっているみたいです。)

こういったブラウザでも Drag&Drop を使えば、表示することが出来ます。
これはリンクをクリックするのではなく、 リンクを押した後、そのままブラウザのアドレスのところまでドラッグして、 離します。
この方法であれば、ほとんどのブラウザでオープンすることはできるのではないかと思います。

link_dd.png
関連記事
スポンサーサイト
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
35位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
6位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

05月 | 2017年06月 | 07月
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。