nodejs+express解决跨域问题

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容