如何提取自定义标头值?

Posted

技术标签:

【中文标题】如何提取自定义标头值?【英文标题】:How to extract custom header value? 【发布时间】:2016-12-12 04:40:28 【问题描述】:

我的项目中接受的答案中有这个确切的代码,我需要迁移到 ASP.NET Core MVP。

How to extract custom header value in Web API message handler?

var env = Request.Headers.GetValues("environment").First();

如何在 .NET Core 中实现这一点?

我希望这不是一个重复的问题,因为我正在尝试使用新系统而不是旧系统来执行此操作。如果有人在有关当前版本的链接中添加答案,我也会很好。

编辑:Where all types for http headers gone in ASP.NET 5? 我尝试了此链接,但 API 可能已更改。我也不认为这与那个问题是重复的。

【问题讨论】:

【参考方案1】:

Request.Headers 返回定义下一个属性的Microsoft.AspNetCore.Http.IHeaderDictionary 接口:

StringValues this[string key]  get; set; 

IHeaderDictionary 具有与 IDictionary 不同的索引器合约,其中它将返回 StringValues.Empty 以获取缺失的条目。

返回类型:Microsoft.Extensions.Primitives.StringValues

返回:存储的值,如果键不存在,则返回 StringValues.Empty。

因此,您可以简单地使用Request.Headers["environment"] 来获取“环境”标头的值

【讨论】:

【参考方案2】:

由于这个答案被浏览的次数很多,你也可以通过参数中的属性来访问这个字段。这是一个例子:

在请求中,您可以访问正文、查询字符串或标题中的任何字段。这是关于授权标头的 Postman 示例:

【讨论】:

以上是关于如何提取自定义标头值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Jquery Ajax 发送自定义标头并使用 C# 在 WCF 服务中检索相同的标头值?

如何在 Tomcat 中添加自定义标头?

更新添加为 HttpClient 的 DefaultRequestHeaders 的自定义标头值

如何在 Swagger UI 中发送带有请求的自定义标头?

如何将自定义标头从 mvc 项目发送到 Web api 项目?

如何在 OpenAPI 3 中使用自定义前缀定义授权标头?