WebDav(IIS10)访问报错404的路径中有特殊符号加号的解决办法

2023年1月18日 482点热度
IIS10的默认规则不允许双重转义,若是访问如“视频60V+30G”文件夹则会报错"staus 404".
    这是因为虽然在window下,加号(+)是合法的文件名,但是在Url里却代表了不同的意思:
  • 若是作为queryString的一部分,那么+号代表空格:
    • 访问 https://www.baidu.com/?dd=ha+ha 和 https://www.baidu.com/?dd=ha%20ha 效果是一样的,解码后,都代表了空格。
  • 但是+号作为Url component(注意不是作为queryString)时,就是+号本身,不会转义:
    • http://www.a.com/date+time/test.html

解决404错误办法:
办法一:IIS10设置允许双重转义
  • 【IIS】-【绑定的网站】-【请求筛选】-【隐藏段】-【webconfig】-【编辑功能设置】,勾选“允许双重转义”,确定保存,即可Url访问带有+号的路径。

办法二:使用第三方WebDav客户端
  • 群晖WebDav套件可以正常浏览SMB远程挂载并带有+号路径的子目录,且可以播放其下视频(nplayer)。

什么是双重转义?
  • 双重转义字符 (例如,"abc\\d") 对于Url,+先转义为space(空格),空格再转义为%20
  • 三个转义字符 (例如,abc\\\d)

书三拾

不积跬步无以至千里