如何在 Swagger UI 中包含 X-XSRF-TOKEN header?

How to include X-XSRF-TOKEN header in Swagger UI?

我有一个 .NET Core 3.1 Web API,我想为其添加 XSRF 保护。所以我现在需要在我的所有端点上的 X-XSRF-TOKEN HTTP header 中的防伪令牌,如 here 所述。 JavaScript 客户端通过点击 /antiforgerytoken 端点获取令牌,这会设置一个包含令牌的 XSRF-TOKEN cookie。这一切都很好,但正如人们所期望的那样,“试一试!” Swagger UI 中的功能不再有效,因为请求缺少 X-XSRF-TOKEN HTTP header。有没有办法让 SwaggerUI 自动调用 /antiforgerytoken 端点并将令牌包含在正在执行的请求中?

在 Swagger UI 上,这可以通过在配置上设置 requestInterceptor 来支持,该配置是拦截和修改传出请求(包括“试用”请求)的功能。请参阅 this comment in Swagger UI repo and the README 上的 Swagger UI 配置。

但是,Swashbuckle.AspNetCore.SwaggerUI 在最新的稳定版本 (5.6.3) 中尚不支持在 C# 中设置 requestInterceptor。有this PR增加了对拦截器的支持,已经合并但还没有发布。因此,如果您正在使用 Swashbuckle.AspNetCore.SwaggerUI,您现在的选择是等待下一个版本,或者在下一个正式版本之前从源代码构建本地版本。