【问题标题】:How to change request headers in .NETCore2 implementations如何在 .NETCore2 实现中更改请求标头
【发布时间】:2018-01-16 06:05:34
【问题描述】:

出于测试目的,我需要将传入 HttpRequest 的 Authorization 标头从 Basic 更改为 Bearer(该处理在一个 ServiceStack 插件中完成,该插件在 PreRequestFilters 阶段起作用)。

这曾经在 ServiceStack 4.5.x 版本 (.NET Framework 4.6.2) 中工作,但在我将代码升级到 5.0.2 和 NETCore2 后就失败了。

查看源代码,我看到 NETCore 实现使用 NetCoreRequest 类实现请求,使用 NetCoreHeadersCollection 类实现标头集合。

不幸的是,无法更改上述集合中的标题,这是我在源代码中看到的:

public override void Add(string name, string value) => throw new NotSupportedException();
public override void Clear() => throw new NotSupportedException();
public override void Remove(string name) => throw new NotSupportedException();
public override void Set(string key, string value) => throw new NotSupportedException();

在请求头到达请求过滤器和 NETCore 实现中的服务之前,是否有另一种方法可以更改请求头?

谢谢,

埃米尔·佩特里索

【问题讨论】:

    标签: servicestack


    【解决方案1】:

    您可以通过以下方式访问 .NET Core 的请求/响应标头集合:

    PreRequestFilters.Add((httpReq, httpRes) => {
    
        if (httpReq.OriginalRequest is HttpRequest coreReq)
        {
            coreReq.Headers[HttpHeaders.Authorization] = ...;
        }
    
        if (httpRes.OriginalResponse is HttpResponse coreRes)
        {
            var authHeader = coreRes.Headers[HttpHeaders.Authorization];
        }
    });
    

    【讨论】:

    • 谢谢!不幸的是,这对我没有帮助,因为我需要修改请求授权标头。
    • @EmilPetrisor 我已经更新了答案以包括访问请求标头。
    猜你喜欢
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 2019-12-08
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    相关资源
    最近更新 更多