Firefox下载某些论坛附件时,文件名在空格处被截断的解决办法

普遍适用的规则分享、讨论

Moderator: phoenix

Post Reply
Ray4
Moderator
Posts: 65
Joined: Dec 30 2007, 09:37

Firefox下载某些论坛附件时,文件名在空格处被截断的解决办法

Post by Ray4 » Jan 07 2008, 21:06

很多使用firefox的人肯定知道,下载某些论坛(比如霏凡)的附件时,只要文件名中包含空格,文件名就会从第一个空格处截断,这是由于Content-Disposition中返回的filename没有加引号,知道了原因,解决起来就很简单,还是prox,加入以下规则到header:

Code: Select all

[HTTP headers]
In = TRUE
Out = FALSE
Key = "Content-Disposition: Fix filename (in)"
URL = "*(/attachment.php\?aid\=[0-9]+|/job.php\?action\=download\&pid\=*)"
Match = "\1filename=$AV(\3)\2"
Replace = "\1filename="\3\2""
disposition.png
disposition.png (36.28 KiB) Viewed 7741 times
解释一下:这里的url地址match了2类论坛的下载地址,其它论坛的下载地址,可根据prox的log里查看并添加。
另外,可以在header value match这部分加上

Code: Select all

$OHDR(User-Agent: *Gecko/*Firefox/*)
这样只有在使用firefox的情况下,此规则才会生效

$IHDR(header-name:matching)
$OHDR(header-name:matching)


$OHDR 和 $IHDR 可以分别用来检查发送和接收的HTTP header信息。header-name是特定的header(不能使用通配符),后面的matching用来检查它的值(可以使用通配符)。当header的值符合条件,则它会返回true值。$OHDR 检查发送的header而 $IHDR 检查接收到的header。下面的例子会匹配 "Referer" 中包含 'microsoft.com' 的header

$OHDR(Referer:*.microsoft.com)

使用此命令,你可以使某个 web filter 在指定的 header 同时匹配时才生效,或者用它来获得并可以在某替换部分以变量的形式插入此header的值,另外,还可以在 HTTP header 规则联合使用以达到更精确的匹配。

Ray4
Moderator
Posts: 65
Joined: Dec 30 2007, 09:37

Re: Firefox下载某些论坛附件时,文件名在空格处被截断的解决办法

Post by Ray4 » Jan 11 2008, 15:21

昨天在这个地方下载时,发现用firefox和opera下载的文件名都是excape了的

Image

面对这样的情况,只要把下载的url添加进去,再用一个$UESC()命令,就像这样:

Code: Select all

Replace = "\1filename="$UESC(\3\2)""
下面是uescape之后,firefox下载框显示的

Image

Post Reply