美文网首页
nodejs+express解决跨域问题

nodejs+express解决跨域问题

作者: FSYu | 来源:发表于2020-08-23 11:33 被阅读0次

nodejs+express解决跨域问题,发现网上的大部分都是误导人,花了不少时间,终于弄懂了
我在vue+nodejs+express+mysql的项目里面,发现本地用vue代理正常调用远程的nodejs api接口,但是放在云服务器上之后,就出现了跨域问题,因为vue代理在线上已经无效了。

方法一:

app.all('*', function(req, res, next) {
  res.header("Access-Control-Allow-Credentials", "true");
  res.header("Access-Control-Allow-Origin", req.headers.origin); // 为了安全,可指定域名白名单,此处为所有域名都可访问,配置多个域名白名单不可直接写数组,要判断条件后赋值单个域名
  res.header("Access-Control-Allow-Headers", "X-Requested-With,Content-Type,token");
  res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
  next();
});
res.header("Access-Control-Allow-Origin", " * ");,这个就会报以下的错误:
image.png
res.header("Access-Control-Allow-Credentials", "true");,如果没有这段代码,解决跨域就无效,一定要加上,注意true是字符串:
image.png

res.header("Access-Control-Allow-Headers", "Content-Type,username");,这是req.headers的字段,比如username,一般后台系统需要在headers里加token验证


image.png

方法二:

const cors = require('cors');
// origin 可配置多个域名白名单(数组),也可配置一项域名(字符串)
app.use(cors({credentials: true, origin: ['http://www.baidu.com','http://www.baidu.com'],headers:'X-Requested-With,Content-Type,username',methods:'PUT,POST,GET,DELETE,OPTIONS'}));

转载自:https://www.cnblogs.com/jinbang/p/8660654.html

相关文章

网友评论

      本文标题:nodejs+express解决跨域问题

      本文链接:https://www.haomeiwen.com/subject/jfuijktx.html