1

私の MVC 3 プロジェクトでは、プロジェクトのルートにいくつかの SWF ファイルを保存するフォルダーがあります。問題は、ブラウザのアドレスバーにある URL にアクセスしたときです。

localhost:39217/Files/fg/f_l1.swf

明らかに、ダウンロード ダイアログが表示されます。それを防ぐ方法はありますか?つまり、そのファイルは DOM がロードされた後にページに表示されますが、その URL を入力しただけではダウンロードされたくないのです。残念ながら、IIS では両方のシナリオが同じように脅かされています。何か案は ?

4

1 に答える 1

1

この問題を解決する方法の 1 つは、実際の物理パスをユーザーに公開しないことです。基本的に、コントローラ アクションから SWF ファイルを配信する必要があります。

object タグを介して SWF ファイルを埋め込む場合、object タグはファイル名を渡すこのアクションを参照します。属性またはその他の方法でアクションを制御できAuthorizeます。リクエストが適切に承認されていることを確認したら、フラッシュ ファイルをレスポンスに書き込みます。

コードはPHPにありますが、アイデアはここで明確に説明されていますが、それをMVCに移行できます。

アップデート:

SWF ファイル パスを変更したくない場合は、Global.asax.cs でもう少し作業を行う必要があります。

routes.IgnoreRoute("Javascript/{*catchall}");
routes.IgnoreRoute("Content/{*catchall}");
routes.IgnoreRoute("Scripts/{*catchall}");

routes.RouteExistingFiles = true;

routes.MapRoute("", "Files/Flash/{file}", new { controller = "File", action = "Flash" });

パスを知って SWF ファイルに直接アクセスしようとしても、要求はコントローラーのFlashアクションによって処理され、Fileそこで必要な認証を行うことができます。SWF を返送する前に確認してください。

于 2012-06-25T16:27:42.557 に答える