CORS问题使用生成的代码(SWAGGER)

我生成我的服务器代码( nodejs-server )基于我有的规格说明。

问题是,当我尝试从我的用户界面(不同的域)击中API时,我得到了知道CORS未启用的错误:

XMLHttpRequest cannot load http://127.0.0.1:10010/events. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.

我生成的index.js如下所示:

 'use strict'; var fs = require('fs'), path = require('path'), http = require('http'); var app = require('connect')(); var swaggerTools = require('swagger-tools'); var jsyaml = require('js-yaml'); var serverPort = 10010; // swaggerRouter configuration var options = { swaggerUi: path.join(__dirname, '/swagger.json'), controllers: path.join(__dirname, './controllers'), useStubs: process.env.NODE_ENV === 'development' // Conditionally turn on stubs (mock mode) }; // The Swagger document (require it, build it programmatically, fetch it from a URL, ...) var spec = fs.readFileSync(path.join(__dirname,'api/swagger.yaml'), 'utf8'); var swaggerDoc = jsyaml.safeLoad(spec); // Initialize the Swagger middleware swaggerTools.initializeMiddleware(swaggerDoc, function (middleware) { // Interpret Swagger resources and attach metadata to request - must be first in swagger-tools middleware chain app.use(middleware.swaggerMetadata()); // Validate Swagger requests app.use(middleware.swaggerValidator()); // Route validated requests to appropriate controller app.use(middleware.swaggerRouter(options)); // Serve the Swagger documents and Swagger UI app.use(middleware.swaggerUi()); // Start the server http.createServer(app).listen(serverPort, function () { console.log('Your server is listening on port %d (http://localhost:%d)', serverPort, serverPort); console.log('Swagger-ui is available on http://localhost:%d/docs', serverPort); }); }); 

不知道如何使用这个生成的代码来启用CORS。

在“初始化Swagger中间件”上面添加这个代码,将域更改为正确的。 节点代码来自jvandemo对相同问题的答案No'Access -Control-Allow-Origin' – 节点/ Apache端口问题

 // Add headers app.use(function (req, res, next) { // Website you wish to allow to connect res.setHeader('Access-Control-Allow-Origin', 'http://server.to.allow.access.from'); // Request methods you wish to allow res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); // Request headers you wish to allow res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); // Set to true if you need the website to include cookies in the requests sent // to the API (eg in case you use sessions) res.setHeader('Access-Control-Allow-Credentials', true); // Pass to next layer of middleware next(); }); 

swagger-codegen不会覆盖现有的index.js

 [main] INFO io.swagger.codegen.DefaultCodegen - Skipped overwriting index.js as the file already exists in C:\path\to\swagger-codegen\generated\nodejs\index.js 
Interesting Posts