在使用 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)的主要内容,如果未能解决你的问题,请参考以下文章
更改 swagger-ui dist bundle 的默认端口
.NetCore2.1 WebAPI 根据swagger.json自动生成客户端代码
asp.net core web api 生成 swagger 文档