工作流下載附件提示HTTP錯(cuò)誤404.11NotFound請(qǐng)求篩選模塊被配置為拒絕包含雙重轉(zhuǎn)義序列的請(qǐng)求是什么原因
![]() ![]() 附件文件名包含特殊字符(+、'、/等)造成的,去掉特殊字符即可,附件文件名命名規(guī)則如下: ![]() 更多說(shuō)明: 文件目錄有這樣一個(gè)包含了加號(hào)的文件:2015年日歷表(A4+版).pdf 現(xiàn)在要求下載此文件,考慮這樣一個(gè)url /UploadFile/2015年日歷表(A4+版).pdf 如果在瀏覽器訪問(wèn)這個(gè)url,有時(shí)候會(huì)出現(xiàn)404.11的錯(cuò)誤: HTTP Error 404.11 - Not Found請(qǐng)求篩選模塊被配置為拒絕包含雙重轉(zhuǎn)義序列的請(qǐng)求。 這是什么原因呢? 在window下,加號(hào)(+)是合法的文件名,但是在url里代表了不同的意思。 參考 http://stackoverflow.com/questions/1005676/urls-and-plus-signs 若是作為queryString的一部分,那么+號(hào)代表空格 訪問(wèn) https://www.baidu.com/?dd=ha+ha 和 https://www.baidu.com/?dd=ha%20ha效果是一樣的,解碼后,都代表了空格: 但是+號(hào)作為Url component(注意不是作為queryString)時(shí),就是+號(hào)本身,不會(huì)轉(zhuǎn)義 例如 http://www.cnblogs.com/imust+2008/p/6829927.html URL-Normalization: Full (url規(guī)范化對(duì)空格的編碼) 1,什么是雙重轉(zhuǎn)義序列 雙重轉(zhuǎn)義字符 (例如,"abc\\d") 對(duì)于url,+先轉(zhuǎn)義為space(空格),空格再轉(zhuǎn)義為%20 三個(gè)轉(zhuǎn)義字符 (例如,abc\\\d)
2,IIS的Request Filtering機(jī)制 IIS7以及以上版本,集成了一個(gè)URLScan工具,用于掃描url,檢測(cè)不安全的字符,此工具的Request Filtering模塊用于過(guò)濾不安全的請(qǐng)求。 https://docs.microsoft.com/en-us/iis/manage/configuring-security/use-request-filtering 其中的double-encoded requests filter(雙重轉(zhuǎn)義過(guò)濾器),用于過(guò)濾雙重轉(zhuǎn)義序列。 當(dāng)url出現(xiàn)雙重轉(zhuǎn)義序列時(shí),IIS將對(duì)url進(jìn)行兩次url規(guī)范化(url normalization),當(dāng)?shù)谝淮我?guī)范化后的字符串與第二次規(guī)范化的字符串不一致時(shí),IIS認(rèn)為這是危險(xiǎn)的url,IIS將拒絕這一請(qǐng)求,并返回404.11錯(cuò)誤。
3,解決方案: 第一種解決方法: 在地址欄輸入:%windir%\system32\inetsrv\config\applicationhost.config,然后單擊打開(kāi),找到: 426行<requestFiltering> 第二種解決方法:
如果已有web.config,只需在其中添加<security>這一節(jié)就行了。 該文章在 2017/9/12 15:06:39 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |