3

我有一些 exe 文件已上传到我的数据库中,因为我不希望它们可以公开访问。我尝试使用链接按钮和通用处理程序使用以下代码提供文件:

Context.Response.Clear()
Context.Response.ContentType = "application/exe"
Context.Response.AppendHeader("Content-Disposition", "filename=program.exe")
Context.Response.BinaryWrite(binaryfile)

问题:谷歌浏览器不会将下载视为任何其他 exe,而是在下载后报告“program.exe 不经常下载,可能很危险”。带有“放弃”按钮和“保留”下载的选项隐藏在上下文菜单下。

是否有任何其他/更好的方式来提供存储在数据库中的 exe 文件?

4

3 回答 3

4

application/exe在野外很少见到。application/octet-stream用于可执行文件更为常见。

如果您使用的是 .NET,那么我暂时假设您使用的是 IIS。(如果不是这种情况,请纠正我。)如果是这样,那么这个(旧的,但仍然有用的)MIME 类型和文件扩展名列表可能会有所帮助。

自然,您将无法真正从服务器端绕过任何浏览器端限制。您可以修改发送给客户端的标头,但最终取决于客户端如何处理响应。

于 2012-05-15T18:27:28.603 回答
3

您是否检查过这个问题: 绕过 Chrome 的恶意文件警告

Jeff G 建议注册 Google 网站管理员工具并添加您的网站。Google 需要几天的时间来抓取您的网站并填写任何信息,但它最终会停止认为您的文件是恶意文件。

于 2012-05-15T18:27:39.730 回答
1

就我而言,我使用以下一组标题解决了它:

Cache-Control: max-age=864000
Content-type: application/octet-stream
Content-Disposition: attachment; filename="....zip"
Content-Transfer-Encoding: binary
Last-Modified: ...
Etag: ...
Content-Length: ...

格外注意 Content-type、Cache-Control、Last-Modified 和 Etag,它们似乎对我很有帮助。

于 2014-12-22T11:29:29.697 回答