如何使用IIS Url Rewrite移除HTTP请求中的Content-Length头?
通过IIS URL Rewrite移除请求Content-Length头的操作方法
1. 先安装URL Rewrite模块
如果服务器尚未安装IIS URL Rewrite模块,打开IIS管理器,点击右上角「管理」栏的「Web平台安装程序」,搜索「URL Rewrite」完成安装即可。
2. 配置规则(两种方式任选其一)
方式一:IIS图形界面操作
- 打开IIS管理器,定位到你的ASP.NET MVC站点,双击右侧功能区的「URL Rewrite」。
- 点击右侧「添加规则」,选择「空白规则」,按以下参数配置:
- 规则名称:自定义命名,比如「移除Content-Length头」
- 匹配URL:
- 请求路径选择「与模式匹配」,模式填写
.*(若仅针对上传接口,可替换为接口路径,如/Upload/Process),使用「正则表达式」。
- 请求路径选择「与模式匹配」,模式填写
- 条件:
- 点击「添加」,输入项选择
{HTTP_CONTENT_LENGTH},检查方式选「匹配模式」,模式填写.*(只要请求携带该头就触发规则)。
- 点击「添加」,输入项选择
- 操作:
- 操作类型选择「重写」,重写URL填写
{R:0}(保持原请求路径不变)。 - 点击「服务器变量」→「添加」:
- 服务器变量名填写
HTTP_CONTENT_LENGTH,值留空,勾选「替换服务器变量的值」。
- 服务器变量名填写
- 操作类型选择「重写」,重写URL填写
- 最后点击「应用」保存规则。
方式二:直接修改web.config
打开站点根目录的web.config文件,在<system.webServer>节点内添加以下配置:
<system.webServer> <rewrite> <rules> <rule name="移除Content-Length头" stopProcessing="true"> <match url=".*" /> <!-- 可替换为你的上传接口路径,如^Upload/Process$ --> <conditions> <add input="{HTTP_CONTENT_LENGTH}" pattern=".*" /> </conditions> <serverVariables> <set name="HTTP_CONTENT_LENGTH" value="" /> </serverVariables> <action type="Rewrite" url="{R:0}" /> </rule> </rules> </rewrite> </system.webServer>
3. 验证配置效果
用浏览器调试工具(如Chrome F12)发起上传请求,检查请求头确认Content-Length已被移除,再测试上传2GB以上文件,即可通过流式方案正常处理请求。
额外注意事项
- 此前修改的web.config上传相关配置(如
maxRequestLength、maxAllowedContentLength)无需改动,与本规则无冲突。 - 确保站点应用池的.NET版本与你的MVC5项目一致,避免兼容性问题。
内容的提问来源于stack exchange,提问作者Ivoryguard
相关产品推荐
相关产品推荐

