IIS请求筛选模块被配置为拒绝包含双重转义序列的请求404.11
文件目录有这样一个包含了加号的文件:2015年日历表(A4+版).pdf
现在要求下载此文件,考虑这样一个url /UploadFile/2015年日历表(A4+版).pdf
如果在浏览器访问这个url,有时候会出现404.11的错误
HTTP Error 404.11 - Not Found
请求筛选模块被配置为拒绝包含双重转义序列的请求
这是什么原因呢?
在window下,加号(+)是合法的文件名,但是在url里代表了不同的意思
参考 http://stackoverflow.com/questions/1005676/urls-and-plus-signs
若是作为queryString的一部分,那么+号代表空格
访问 https://www.baidu.com/?dd=ha+ha 和 https://www.baidu.com/?dd=ha%20ha效果是一样的,解码后,都代表了空格



但是+号作为Url component(注意不是作为queryString)时,就是+号本身,不会转义
例如 http://www.cnblogs.com/imust+2008/p/6829927.html

URL-Normalization: Full (url规范化对空格的编码)

1,什么是双重转义序列
双重转义字符 (例如,"abc\\d") 对于url,+先转义为space(空格),空格再转义为%20
三个转义字符 (例如,abc\\\d)
2,IIS的Request Filtering机制
IIS7以及以上版本,集成了一个URLScan工具,用于扫描url,检测不安全的字符,此工具的Request Filtering模块用于过滤不安全的请求。
https://docs.microsoft.com/en-us/iis/manage/configuring-security/use-request-filtering
其中的double-encoded requests filter(双重转义过滤器),用于过滤双重转义序列。
当url出现双重转义序列时,IIS将对url进行两次url规范化(url normalization),当第一次规范化后的字符串与第二次规范化的字符串不一致时,IIS认为这是危险的url,IIS将拒绝这一请求,并返回404.11错误。
3,
关闭 double-encoded requests filter
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true"/>
</security>
</system.webServer>
IIS请求筛选模块被配置为拒绝包含双重转义序列的请求404.11的更多相关文章
- 请求筛选模块被配置为拒绝包含双重转义序列的请求(.net core程序的‘web.config’调整)
之前项目有一个静态文件特殊字符转义的报错(+变为 %2B),老是显示404 请求筛选模块被配置为拒绝包含双重转义序列的请求 .网上的大多数解决方案都是一下: https://www.cnblogs ...
- URL中含有+号,出现错误“请求筛选模块被配置为拒绝包含双重转义序列的请求”的解决方法
搜索关键词中含空格,提交后被自动转成了“+”号,报如下错误: HTTP 错误 404.11 - Not Found 请求筛选模块被配置为拒绝包含双重转义序列的请求. 解决方法: 在web.config ...
- IIS7.0提示“请求筛选模块被配置为拒绝包含双重转义序列的请求”处理办法
请求筛选模块被配置为拒绝包含双重转义序列的请求.HTTP 错误 404.11 - Not Found 解决办法: 1.单击 开始 . 在 开始搜索 框中, 键入 Notepad. 右击 记事本 , 然 ...
- HTTP 错误 404.11 - Not Found 请求筛选模块被配置为拒绝包含双重转义序列的请求。
一些URL中可能会包含+号等符号,然后IIS7以上的版本会默认拒绝请求此URL,需要进行如下的修改. <configuration> <system.webServer> &l ...
- IIS7.0下 HTTP 错误 404.15 - Not Found 请求筛选模块被配置为拒绝包含的查询字符串过长的请求
IIS7.0下 HTTP 错误 404.15 - Not Found 请求筛选模块被配置为拒绝包含的查询字符串过长的请求 IIS7.0下查询条件太多时,会报错,因为IIS 7对于Query Str ...
- HTTP 错误 404.15 - Not Found 请求筛选模块被配置为拒绝包含的查询字符串过长的请求。
HTTP 错误 404.15 - Not Found 请求筛选模块被配置为拒绝包含的查询字符串过长的请求. 2018-04-20 14:00 by 码农小周, 21 阅读, 2 评论, 收藏, 编辑 ...
- 请求筛选模块被配置为拒绝包含 hiddenSegment 节的 URL 中的路径
转自原文 请求筛选模块被配置为拒绝包含 hiddenSegment 节的 URL 中的路径. 打开C:\Windows\System32\inetsrv\config路径 找到applicationH ...
- asp.net 问题:Web 服务器上的请求筛选模块被配置为 拒绝包含的查询字符串过长的请求
发现问题: post请求,在发送一个图片base64编码的字符串时,服务端报这个错误. 报错信息中给出了解决办法: 最可能的原因: Web 服务器上的请求筛选被配置为拒绝该请求,因为查询字符串过长. ...
- HTTP 错误 404.15 - Not Found请求筛选模块被配置为拒绝包含的查询字符串过长的请求
web项目中,get方式传值是通过地址栏中的url参数进行传递的.除了浏览器对url长度的限制大小不一之外,出于安全考虑, IIS中对于URL中参数大小也是有限制的,默认为2048KB. 如果参数大于 ...
随机推荐
- Linux命令之hostname - 显示或设置主机名
我使用过的Linux命令之hostname - 显示或设置主机名 本文链接:http://codingstandards.iteye.com/blog/804648 (转载请注明出处) 用途说明 ...
- B2B,ERP,SCM
B2B: B2B电子商务平台是指一个市场的领域的一种,是企业对企业之间的营销关系.电子商务是现代B2B marketing的一种具体主要的表现形式.网商通过它将企业内部网,通过B2B网站与客户紧密结合 ...
- Linux - samba 服务
暂时关闭 iptables 防火墙 [root@sch01ar ~]# systemctl stop iptables.service 暂时关闭 firewall 防火墙 [root@sch01ar ...
- RPC框架的服务注册和发现
https://www.cnblogs.com/valor-xh/p/6281502.html https://blog.csdn.net/listslim1/article/details/5157 ...
- leetcode451
public class Solution { public string FrequencySort(string s) { var dic = new Dictionary<char, in ...
- django -- 自定义simpletag 和 filter
django中自定义simpletag,即使用自己定义的函数在html中处理数据. 步骤: 1.创建并注册app settings.py INSTALLED_APPS = [ 'django.cont ...
- django -- url 的 默认值
在urls.py里可以直接向函数传递默认值,看代码: urls.py from django.conf.urls import url from mytest import views urlpatt ...
- jq循环方法
jq在前台使用很广泛,其中不可避免会用到循环,for循环可以,但有时不方便,下边举两个jq循环: 第一个: $.each(数组或对象,function(index,item){ //循环的逻辑代码 } ...
- 产品负责人(Product Owner)的主要职责和技能
角色介绍 产品负责人以下简称PO,他是有授权的产品领导力核心,组成Scrum团队三个角色之一. PO担任的是产品经理的角色. PO的主要职责 1.对产品的ROI负责. ROI = profitabil ...
- mysql 查询某字段值全是数字
select * from x_ziyuan where zy_zhanghu regexp '^[0-9]+$'