在我的MVC 3项目中,我在项目的根目录中有一个文件夹,用于存储一些SWF文件。问题是,当我点击浏览器地址栏中的网址时,例如
localhost:39217/Files/fg/f_l1.swf
显然我看到了下载对话框。有什么办法可以预防吗?换句话说,在加载DOM之后,该文件将在我的页面中可见,但如果我只是键入其URL,我不希望它被下载。我担心这两种情况在IIS中都是相同的。有任何想法吗 ?
答案 0 :(得分:1)
我可以看到解决此问题的一种方法是不显示用户的真实物理路径。基本上,您应该从控制器操作传递SWF文件。
如果您通过object标签嵌入SWF文件,那么object标签将引用传递文件名的操作。您可以通过Authorize
属性或其他方式控制操作,一旦您看到请求得到适当授权,您就可以将Flash文件写入响应中。
这个想法清楚地解释了here虽然代码在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之前检查。