在 Audit.Net 中的响应 header 中缺少位置 header

Location header missing in response headers in Audit.Net

当使用 Audit.Net 时,我包括要审核的整个响应,例如响应内容、headers 和 IncludeHeaders,下面是我的配置:

mvcOptions.AddAuditFilter(a => a
            .LogRequestIf(d => d.HttpContext.Request.Method != HttpMethods.Get)
            .WithEventType("{verb}.{controller}.{action}")
            .IncludeHeaders()
            .IncludeResponseBody()
            .IncludeResponseHeaders()); 

但我只能看到以下响应 headers。

"Headers": {
      "Connection": "keep-alive",
      "Content-Type": "application/json",
      "Accept": "*/*",
      "Accept-Encoding": "gzip, deflate, br",
      "Host": "localhost:50266",
      "User-Agent": "PostmanRuntime/7.26.10",
      "Content-Length": "3503",
      "Postman-Token": "645b83e3-d1b6-40f8-b615-85052b614b37"
    },
    "ResponseHeaders": {
      "Request-Context": "appId=xxxxxxx",
      "Referrer-Policy": "no-referrer",
      "X-Content-Type-Options": "nosniff",
      "Content-Security-Policy": "default-src 'self';"
    }

我的回复还包含位置 header,但在审核日志中看不到。此请求是通过 Postman 提出的,Postman 中的响应 headers 如下所示:

位置header在邮递员中清晰可见,但在审计日志中同样缺失,我在这里错过了什么?有什么指点吗?

您应该使用提供的 中间件 以获得响应 headers,因为大部分响应 headers 都添加到执行的结果过滤器中在操作过滤器之后,AuditApiGlobalFilter 是一个操作过滤器。

recommended approach 是配置 action filtermiddleware 这样你就可以得到动作的具体信息和以及之后添加的任何信息,例如响应 headers。此外,包括 中间件 将允许审核未达到 controller/action.

的请求

所以只需将以下内容添加到您的启动中:

public void Configure(IApplicationBuilder app)
{
    app.UseAuditMiddleware(_ => _
        .FilterByRequest(d => d.HttpContext.Request.Method != HttpMethods.Get)
        .IncludeHeaders()
        .IncludeResponseBody()
        .IncludeResponseHeaders()
        .WithEventType("{verb}.{controller}.{action}"));

    // ...
}