4

当使用与 springdoc-openapi 捆绑的请求时,有没有办法自动将 CSRF 标头包含到从 swagger ui 发出的请求中?

在 springfox ( GitHub )中似乎实现了类似的解决方案,但我没有找到有关这是否可以通过 springdoc-openapi 完成的信息。

4

2 回答 2

3

如果您使用标准标头,则默认支持 CSRF 令牌。(例如使用 spring-security 标头)

如果需要 CSRF Token,swagger-ui 会在每个 HTTP REQUEST 期间自动发送新的 XSRF-TOKEN。

也就是说 - 如果您的 XSRF-TOKEN 不是基于标准的,您可以使用 requestInterceptor 手动捕获最新的 xsrf 令牌并通过 spring 资源转换器以编程方式附加到请求:

此外,随着时间的推移,CSRF 的相关性越来越低,因为浏览器添加了用户代理级别的支持来控制跨域请求 cookie 的包含。

从 springdoc-openapi v1.4.4 版本开始,添加了一个新属性以启用 CSRF 支持,同时使用标准头名称:

springdoc.swagger-ui.csrf.enabled=true
于 2020-06-09T14:43:29.303 回答
0

SwaggerUI 默认不包含 CSRF-TOKEN 到请求中

如果您使用的是 React,您可以重用以下代码来手动包含它:

import React from 'react';
import SwaggerUI from "swagger-ui-react"
import "swagger-ui-react/swagger-ui.css"
import Cookies from 'universal-cookie';

const cookies = new Cookies();

const DocsPage = () => (
  <SwaggerUI url="/v2/api-docs" requestInterceptor={(request) => {
    request.headers['X-XSRF-TOKEN'] = cookies.get("XSRF-TOKEN")
  }}/>
);

export default DocsPage;

于 2020-08-12T12:54:19.037 回答