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

时间:2016-08-22 04:29:10

标签: node.js express cors swagger swagger-ui

我在使用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');
  }
});

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

  1. 从npm导入cors模块:

    npm install cors

  2.   

    在app.js

    var cors = require('cors');
    
    app.all(cors())
    
    1. 使用enable-cors网站中的语句添加CORS: http://enable-cors.org/server_expressjs.html
    2. 上述两种方法都失败了,我接下来可以尝试什么?如果需要,我可以共享更多代码示例。

1 个答案:

答案 0 :(得分:3)

我猜你没有正确配置cors

npm install cors

用法

var cors = require('cors');

app.use(cors());

See more

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