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

.NET 4.7 Web API 读取Authorization header始终为null如何解决

.NET Framework 4.7 Web API 读取Authorization请求头返回null的解决方案

你当前使用的请求头读取代码本身没有语法错误,出现jwtToken为null的核心原因是.NET Framework 4.7的默认安全策略导致的:未配置任何认证模块的Web API项目,ASP.NET/IIS请求管道会默认过滤掉Authorization请求头,不会将该头传递到Controller层的Request对象中。

常见解决方案

  • 方案1:修改web.config配置,允许Authorization头传递
    在项目根目录的web.config文件中添加如下配置,关闭默认的头过滤逻辑:
<configuration>
  <system.webServer>
    <!-- 移除默认认证模块的头拦截逻辑 -->
    <modules>
      <remove name="FormsAuthentication" />
      <remove name="DefaultAuthentication" />
    </modules>
    <!-- 显式允许Authorization请求头通过请求过滤规则 -->
    <security>
      <requestFiltering>
        <requestHeaders>
          <add name="Authorization" allowed="true" />
        </requestHeaders>
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>
  • 方案2:OWIN托管项目直接从OWIN上下文读取
    如果你的项目使用OWIN中间件托管,也可以直接从OWIN上下文获取未被过滤的请求头:
var owinContext = Request.GetOwinContext();
string authHeader = owinContext.Request.Headers.Get("Authorization");
// 提取JWT内容
string jwt = authHeader?.Replace("Bearer ", string.Empty);

排查验证方法

如果配置完成后依然获取不到值,可以先输出所有请求头,确认Authorization头是否已经传递到应用层:

var headerLogs = Request.Headers.AllKeys.Select(key => $"{key}: {Request.Headers[key]}");
System.Diagnostics.Debug.WriteLine(string.Join("\n", headerLogs));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:09:02