我试图在node.js中允许CORS,但是问题是我无法设置*为Access-Control-Allow-Originif Access- Control-Allow-Credentials。
*
Access-Control-Allow-Origin
Access- Control-Allow-Credentials
另外规范说我不能为数组或逗号分隔值,Access-Control-Allow-Origin建议的方法是做类似于此Access-Control-Allow-Origin多源域的操作?但是我似乎无法在node.js中这样做
["http://mydomain.com:9001", "http://mydomain.com:5001"].map(function(domain) { res.setHeader( "Access-Control-Allow-Origin", domain ); }); res.header( "Access-Control-Allow-Credentials", true );
这里的问题是它会被数组中的最后一个值覆盖,因此标头将设置为 res.setHeader( "Access-Control-Allow-Origin", "http://mydomain.com:5001" );
res.setHeader( "Access-Control-Allow-Origin", "http://mydomain.com:5001" );
来自客户端浏览器的错误:
XMLHttpRequest无法加载http://mydomain.com:9090/api/sync。“ Access-Control-Allow-Origin”标头的值“ http://mydomain.com:5001 ”不等于所提供的来源。因此,不允许访问来源“ http://mydomain.com:9001 ”。
这是我在快递申请中使用的允许多个来源的商品
app.use(function(req, res, next) { var allowedOrigins = ['http://127.0.0.1:8020', 'http://localhost:8020', 'http://127.0.0.1:9000', 'http://localhost:9000']; var origin = req.headers.origin; if(allowedOrigins.indexOf(origin) > -1){ res.setHeader('Access-Control-Allow-Origin', origin); } //res.header('Access-Control-Allow-Origin', 'http://127.0.0.1:8020'); res.header('Access-Control-Allow-Methods', 'GET, OPTIONS'); res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization'); res.header('Access-Control-Allow-Credentials', true); return next(); });