2011-08-10 7 views
3

ページに〜40枚の画像を表示する必要があり、ユーザーはそれらの画像をホットリンクできません。現在<img src="...">cgi.http_refererをチェックし、cfcontentを使用して画像を表示するハンドラを示しています。しかし、一部の画像は読み込みに失敗し(40枚中〜6枚)、ページを更新すると他の画像が読み込まれなくなります。画像を表示し、ホットリンクを許可しない

この問題は、10個以上のイメージを表示する必要があると思われます。これは私がcfcontentを使っているからだと思いますか?もしそうなら、私は代わりに何を使うべきですか?

+1

ちょうど私にhttp://www.bennadel.com/blog/2170-Streaming-Secure-Files-Efficiently-With-ColdFusion-And-MOD-XSendFile.htmを思い出させました – Henry

+0

私はこの1つでヘンリーと一緒ですが、これはColdFusionレベルよりもWebサーバーレベルではるかに優れています。しかし、それでも、人々がそれらのイメージを望むなら、彼らはそれらを手に入れるでしょう。もっとBen Nadelを救済する:) http://www.bennadel.com/blog/314-ColdFusion-CGI-Variables-Hot-Linking-And-Poor-Documentation.htm –

答えて

3

これらの画像がどうして失敗したのかを正確に知るには、もう少し作業が必要です。あなたはFireFoxのFirebugやSafariやChromeのコンソールのようなものを使用して、失敗しているリクエストで何が起きているのかを調べるべきです。 Fiddler on Windows for IEまたはCharles on the Mac, Windows, or Linuxのようなものを使用して、バックグラウンドで発生している完全なHTTPリクエストと、ColdFusionアプリケーションサーバーからの完全な戻り値を確認することもできます。彼らがなぜ失敗しているのか正確に分かるまで、私たちはどんな解決策も思い付くことができません。

覚えておいていただきたいもう一つは、ColdFusionでこれを行うと、ページが読み込まれるたびにCFサーバーに40件のリクエストが追加されます。したがって、1つのページで41個のヒットがCFサーバーに送られ、処理されます。コードが可能な限りきつくあることを確認してください。

私はこのルートに行くつもりなら、サーバーレベル(IISまたはApache)で、サーバーレベルのフィルタを使用してホットリンクを防止します。しかし、周りには常に道があることを覚えておいてください。

+0

Chromeの開発ツールでは、 「イメージとして解釈されるがMIMEタイプtext/htmlで転送されるリソース」というイメージが消えています。私のcfcontentのタイプをimage/jpegとしてハードコーディングしても、まだテキスト/ htmlであることがわかっています –

+1

これは、これらのリクエスト中にエラーが発生している可能性があることを示しています。私の提案は、チャールズをインストールしてファイルを実行し、チャールズのセッション結果をスクロールして、失敗した要求に対してサーバーからの生の応答を調べることです。これらのページにCFエラーがあると推測しています。なぜなら、あなたの返品は 'image/jpeg'の代わりに' text/html'でしょう。 –

+1

私はチャールズを何とかインストールすることはできませんが、フィドラーをインストールしましたが、消えてしまうイメージには「VIEWPATH要素が式の一部として参照されているCFML構造体で定義されていません」というエラーメッセージがあります。それはColdboxから来ているようだ。とにかく、私はColdboxをバイパスしてcfmを 'cfcontent'と呼んでみました。それは動作しているようです。 –

関連する問題