You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IIS 10如何移除传入请求中的User-Agent头部以解决400错误?

解决IIS中重复User-Agent头导致400错误的方法

注意:IIS碰到重复请求头时会直接返回400,常规URL重写规则根本跑不起来——因为请求还没到重写环节就被IIS提前拦截了。下面是几个可行的临时解决方案:

方案一:用ARR代理请求(推荐)

ARR(Application Request Routing)能在IIS解析请求前接管处理,刚好能解决这个问题:

  1. 先安装ARR模块:可以通过IIS管理器的“管理模块”入口,或者用Web平台安装程序搜索安装
  2. 启用ARR代理:打开IIS管理器,点击服务器节点,找到“Application Request Routing Cache”,右侧操作栏点“Server Proxy Settings”,勾选“Enable proxy”
  3. 创建URL重写规则,把请求转发到本地(相当于自己代理自己),顺便处理重复头:
    • 进入站点的URL重写模块,添加空白规则
    • 匹配规则:URL填(.*),匹配范围选“Matches the Pattern”,用正则表达式
    • 操作选“Rewrite”,重写URL填http://localhost/{R:1}(如果站点用了自定义端口,要加上,比如http://localhost:8080/{R:1})
    • 切换到“Server Variables”标签,添加HTTP_USER_AGENT,设置值为{HTTP_USER_AGENT},同时勾选“Replace”——ARR在代理时会自动合并重复的User-Agent头,只保留一个有效条目
  4. 保存规则后测试请求即可

方案二:自定义HTTP模块

如果不想用ARR,自己写个简单的HTTP模块也能搞定,它会在IIS解析请求头之前介入:
先写C#代码编译成DLL:

public class RemoveDuplicateUserAgentModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.BeginRequest += HandleBeginRequest;
    }

    private void HandleBeginRequest(object sender, EventArgs e)
    {
        var app = (HttpApplication)sender;
        var requestHeaders = app.Context.Request.Headers;
        
        var userAgentValues = requestHeaders.GetValues("User-Agent");
        if (userAgentValues != null && userAgentValues.Length > 1)
        {
            requestHeaders.Remove("User-Agent");
            // 这里可以选择取第一个值,或者合并所有值,按需调整
            requestHeaders.Add("User-Agent", userAgentValues[0]);
        }
    }

    public void Dispose() { }
}

然后在站点的web.config里注册这个模块:

<system.webServer>
  <modules>
    <add name="RemoveDuplicateUserAgentModule" type="你的命名空间.RemoveDuplicateUserAgentModule, 你的程序集名称" />
  </modules>
</system.webServer>

注意:这个模块需要IIS运行在集成模式下,经典模式可能需要调整配置。

方案三:修改注册表(应急用,不推荐)

这个是全局设置,会影响所有站点,风险较高,仅作为临时应急:

  1. 打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
  2. 新建DWORD值AllowDuplicateHeaders,设置值为1
  3. 重启HTTP服务:打开命令提示符,运行net stop http && net start http
    注意:此方法可能引发其他兼容性问题,非必要别用。

内容的提问来源于stack exchange,提问作者martinoss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 01:01:12