我正在尝试修复
swagger UI
的内容安全策略问题。我正在寻找一种添加标头或 Springfox
配置选项来解决问题的方法。
无法加载 UI,并且
v2/api-doc
工作正常。
请建议我一种解决问题的方法。
这个问题是由于我的 fastify 头盔造成的。
import headers from "fastify-helmet";
替换 main.ts 中的以下内容
app.register(headers)'
与
app.register(helmet, {
contentSecurityPolicy: {
directives: {
defaultSrc: [`'self'`],
styleSrc: [`'self'`, `'unsafe-inline'`],
imgSrc: [`'self'`, 'data:', 'validator.swagger.io'],
scriptSrc: [`'self'`, `https: 'unsafe-inline'`],
},
},
})
解决了问题:
添加
staticCSP: true
对我有用:
server.register(fastifySwagger, {
exposeRoute: true,
routePrefix: '/documentation',
staticCSP: true,
swagger: {
info: {
title: 'whatever',
description: 'something',
version: '1.0.0'
},
},
});
对于现在遇到这个问题的任何人,答案是更新您的 swagger ui 版本(或使用它的库)以使用 Swagger-ui>4.8.1。
低于该版本的版本具有阻碍内容安全策略设置的内联脚本和内联样式。这里讨论的问题 https://github.com/swagger-api/swagger-ui/issues/3370
修复已在此处介绍 https://github.com/swagger-api/swagger-ui/pull/7905
与 swagger-ui 4.8.1 及更高版本相关。