Node.js helmet和swagger-ui

r8uurelv  于 12个月前  发布在  Node.js
关注(0)|答案(2)|浏览(174)

我在Node.js中使用swagger作为API文档。现在我想使用helmet来保护安全,但是当我使用helmet时,错误发生了。但是,如果我将helmet放在swagger路由器下面,那么它就可以正常工作,这意味着helmet做了一些事情,使得swagger-ui无法加载。
下面的代码是我如何使用 Helm 。

var helmet = require('helmet')
app.use(helmet());

字符串
下图是swagger的错误
x1c 0d1x的数据
修复允许cors,但仍然得到一个错误。

//allow cors
app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*"); // update to match the domain you will make the request from
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
  });
  
// use helmet
var helmet = require('helmet')
app.use(helmet());

oalqel3c

oalqel3c1#

您需要启用CORS,这样它就会在响应中发送E-Control-Allow-Origin:* 头。CORS代表跨源资源共享。它将我们打算服务的内容开放给公众,以便通用JavaScript/浏览器访问。
举例说明:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "YOUR-DOMAIN.TLD"); // update to match the domain you will make the request from
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

字符串

yx2lnoni

yx2lnoni2#

在设置HelmetJS中间件之前,始终确保渲染Swagger UI模板,以避免出现问题。

// before
const document = SwaggerModule.createDocument(app, new DocumentBuilder().build());
SwaggerModule.setup('docs', app, document);

// then
app.use(helmet());

字符串
resource

相关问题