文章目录
Access-Control-Allow-Origin
只允许一个值不允许多个值,我们会很自然的理解为多个域添加逗号,但是的确不行,该属性的值只允许一个值。
解决方案:
判断当前请求的host,是否在允许列表如果在允许列表,则设置Access-Control-Allow-Origin
属性为该请求的host即可。详细代码入下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| app.all('/api/*', function(req, res, next) { var allows = ["http://openks.oschina.io", "http://www.zhuyangxing.cn"]; if (process.env.SERVER_SOFTWARE != undefined && process.env.SERVER_SOFTWARE.indexOf("bae") > -1) { if (allows.indexOf(req.headers.origin) > -1) { res.header("Access-Control-Allow-Origin", req.headers.origin); } } else { res.header("Access-Control-Allow-Origin", "http://10.10.11.222"); } res.header("Access-Control-Allow-Headers", "X-Requested-With"); res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS"); res.header("Content-Type", "application/json;charset=utf-8"); next(); });
|
当然也可以使用npm
上已经存在的插件cors
关于 cors
更多信息在这里