4

ローカル ファイルに IMG タグを作成しようとしているローカルホスト マシン (ポート 8080) でサーバーを実行しています。ただし、ファイルは Firefox 11 では表示されません。

私はもともと Javascript を使用してイメージ タグを作成していましたが、それが失敗したため、HTML に戻ってファイルを直接参照するさまざまな方法を試しました。次のいずれも機能しません。

<img src="file:///localhost:8080/C://Users/me/IMG_1000.JPG">
<img src="file:///localhost/C://Users/me//IMG_1000.JPG">
<img src="file:///C://Users/me/IMG_1000.JPG">

最後の URL をアドレス バーに直接貼り付けると、画像が正常に開きます。

ここの指示に従いました:

http://kb.mozillazine.org/Firefox_:_Issues_:_Links_to_Local_Pages_Don%27t_Work

user.js と prefs.js の両方を、直接および about:config ビューアーを介して変更しようとしました。

[ヘルプ] -> [トラブルシューティング情報] -> [プロファイル ディレクトリ] -> [格納フォルダーを開く] から、プロファイル ディレクトリへの正しいパスを取得しました。

追加された関連行は次のとおりです。

user_pref("capability.policy.localfilelinks.checkloaduri.enabled", "allAccess");
user_pref("capability.policy.localfilelinks.sites", "localhost:8080");
user_pref("capability.policy.policynames", "localfilelinks");

本来は「localhost:8080」の from に http:// を入れていたのですが、Firefox がそれを削除してしまいました。「http://localhost」と「http://127.0.0.1」だけでも試してみましたが、どちらもうまくいきませんでした。

しかし...奇妙なことに、about:configから入力してprefs.jsで見ることができますが、about:configからは見ることができません! これは、おそらく mozillazine の情報が古くなっているのではないかと思います。結局のところ、情報は「Firefox 1.5 以降」用であり、私は Firefox 11 を使用しています!

注: file:// アクセスを使用する理由は、マシン上のファイルへの任意のアクセスを許可したくないからです。もう少し説明すると、データベースへのインターフェースがあり、データベースにアクセスするために必要なのはパスワードだけです。パスワードを知っている人なら誰でも自分のマシンの外部からデータベースにアクセスできるようにしたいのですが、画像ファイルはデータベースの外部に存在します。サーバーを介してファイルをサーバーにアップロードするには (存在するファイルは動的であるため)、データベースで何らかの識別子を取得する新しい CGI を作成する必要がありますが、ユーザーは DB にアクセスできるため、任意のファイル名を挿入できます。彼らは欲しかった。

編集:また、ファイルの URL を window.open() することもできません。それはどのようなセキュリティ上の利点をもたらす可能性がありますか?

4

2 に答える 2

1
<img src="file:///localhost:8080/C://Users/me/IMG_1000.JPG">
<img src="file:///localhost/C://Users/me//IMG_1000.JPG">

8080 上のサーバーの場合は、file:// を使用しないでください。これはファイルではありません。http://localhost:8080/blahである必要があります。このように機能するとは思いませんが、2 つ目 (機能する場合) は file://localhost/c:/* になります。スラッシュの数に注意してください。そして、上記の行には追加の // があります / あるべき場所

<img src="file:///C://Users/me/IMG_1000.JPG">

これは理にかなっていますが、そのためには、セキュリティ制限のためにアクセスする能力が制限されます.

user_pref("capability.policy.localfilelinks.sites", "localhost:8080");

ページがhttp://localhost:8080/ *からロードされた場合、それは (おそらく) file:///c:/* のもので動作するはずです。

  • http://localhost:8080/を使用* - おそらく最良の解決策
  • フォルダを使用し、実際のファイルへのすべてのソフト リンクまたはハード リンクを作成して、ディスクの使用と更新の問題を最小限に抑えます。
  • フォルダーを使用し、無数のツール (rsync など) のいずれかを使用して同期します
于 2012-04-24T04:06:02.813 に答える
-2
  1. あなたのウェブサイト内に新しいフォルダーを作成します
    2 新しいフォルダー内のすべてのデータをコピーします
    3.次に、そのフォルダーへのリンクを提供します。
于 2012-04-22T18:18:39.303 に答える