在使用 Swagger 开发的 NodeJS 上的 ExpressJS 框架中启用跨域资源共享 (CORS)

Posted

技术标签:

【中文标题】在使用 Swagger 开发的 NodeJS 上的 ExpressJS 框架中启用跨域资源共享 (CORS)【英文标题】:Enabling Cross Origin Resource sharing (CORS) in ExpressJS framework on NodeJS developed using Swagger 【发布时间】:2016-12-28 12:38:21 【问题描述】:

我已经在使用 Swagger 生成的 localhost 上托管了一个 nodejs 服务器,我正在尝试使用再次托管在 localhost 上的 Swagger UI 对其进行 API 调用。每次我拨打电话时,chrome 中的网络配置文件都显示连接被拒绝,因为 CORS 标头未添加到请求中。

这是我使用 Swagger 生成的 app.js 文件:

'use strict';

var SwaggerExpress = require('swagger-express-mw');

var app = require('express')();
module.exports = app; // for testing

var config = 
  appRoot: __dirname // required config
;


SwaggerExpress.create(config, function(err, swaggerExpress) 
    if (err)  throw err; 

  // install middleware

  swaggerExpress.register(app);
  var port = process.env.PORT || 10010;
  app.listen(port);

  if (swaggerExpress.runner.swagger.paths['/hello']) 
    console.log('try this:\ncurl http://127.0.0.1:' + port + '/hello?name=Scott');
  
);

到目前为止,我已经尝试了以下方法,但都没有奏效:

    从 npm 导入 cors 模块:

    npm install cors

在 app.js 中

var cors = require('cors');

app.all(cors())
    使用 enable-cors 网站中给出的语句添加 CORS: http://enable-cors.org/server_expressjs.html

以上两种方法对我来说都失败了,接下来我可以尝试什么?如果需要,我可以分享更多代码示例。

【问题讨论】:

必须是app.use(cors()) 【参考方案1】:

我猜你没有正确配置cors

npm install cors

用法

var cors = require('cors');

app.use(cors());

See more

CORS 支持 https://github.com/swagger-api/swagger-ui#cors-support

【讨论】:

以上是关于在使用 Swagger 开发的 NodeJS 上的 ExpressJS 框架中启用跨域资源共享 (CORS)的主要内容,如果未能解决你的问题,请参考以下文章

为现有的 NodeJS 服务器生成 Swagger 文档

更改 swagger-ui dist bundle 的默认端口

.NetCore2.1 WebAPI 根据swagger.json自动生成客户端代码

asp.net core web api 生成 swagger 文档

OpenAPI(Swagger Code Generator)注入式漏洞

SpringBoot 集成 Swagger