浏览器如何在下载中找到文件名?

问题描述:

你可能会说它会查看Content-Disposition作为文件名,但我正在谈论这个标题中什么都没有,并且URL也不是那么直截了当,如http://website.com/myfile.zip。我在这里留下一些例子,但想知道如何浏览器(我使用FireFox)在save as dialog找到正确的名称。它是否知道着名网站的URL语法?浏览器如何在下载中找到文件名?

download links in sourceforge.net 
download links in cnet.com 
download from your own localhost 

我用Fiddler2进行逆向工程。

URL:http://mesh.dl.sourceforge.net/project/npp-plugins/Function列表/ FunctionList插件V2.1/FunctionList_2_1_UNI_dll.zip

的Fiddler输出样本:

HTTP/1.1 200 OK 
Date: Sat, 13 Nov 2010 22:46:31 GMT 
Server: Apache/2.2.9 (Debian) 
Last-Modified: Thu, 18 Feb 2010 04:35:26 GMT 
ETag: "142a602c-1fe24-47fd87eed7f80" 
Accept-Ranges: bytes 
Content-Length: 130596 
Connection: close 
Content-Type: application/zip 

EDIT:问题是Content-Disposition没有被设置为最终响应,而不是在它的一个重定向。 HttpWebRespose标题包含最后response headerAllowAutoRedirec t = true)。我需要跟踪所有回复,并检查是否存在Content-Disposition然后记住它。怎么样 ?

+1

不,浏览器开发人员不使用为“着名”网站制作特殊代码。 – 2010-11-13 22:29:01

使用content-disposition或任何其他标准的方法。请参阅使用Live HTTP Headers这个例子我刚刚从SourceForge得到:

HTTP/1.1 302 Found 
X-Powered-By: PHP/5.2.9 
Content-Disposition: attachment; filename="FunctionList_2_1_UNI_dll.zip" 
Location: http://mesh.dl.sourceforge.net/project/npp-plugins/Function%20List/FunctionList%20Plugin%20v2.1/FunctionList_2_1_UNI_dll.zip 
Content-Type: text/html 
Content-Length: 0 
Date: Sat, 13 Nov 2010 22:30:00 GMT 
Server: lighttpd/1.4.26 

注意,他们也使用重定向,也许你会受到该混淆。

如果它不是Content-Disposition标题的文件名属性,它可能包含一些HTTP 302重定向,或者带有文件下载的隐藏iframe