node+express(解决跨域)

node+express(解决跨域)

最近在研究node+express搭建简单的后台,但发现了跨域如下图:
在这里插入图片描述
因为我的后端地址的端口号为3000,前台启动的端口号是8080;由于同源策略,就跨域了。既然跨域了,问题还是要解决。查了资料,我最初是在express搭建的项目中,找到app.js
加了这么一段代码,如下图:
在这里插入图片描述
但是问题并没有解决,还是报跨域。很显然这样写没用,我就想到了express中使用中间件,又测试了一番。最后附上正确解决跨域的代码:

app.use((req, res, next) => {
    //设置请求头
    res.set({
        'Access-Control-Allow-Credentials': true,
        'Access-Control-Max-Age': 1728000,
        'Access-Control-Allow-Origin': req.headers.origin || '*',
        'Access-Control-Allow-Headers': 'X-Requested-With,Content-Type',
        'Access-Control-Allow-Methods': 'PUT,POST,GET,DELETE,OPTIONS',
        'Content-Type': 'application/json; charset=utf-8'
    })
    req.method === 'OPTIONS' ? res.status(204).end() : next()
})

其中 ‘Access-Control-Allow-Origin’: req.headers.origin || ‘*’,就是解决跨域最关键的一句。

同时附上:app.use(’/’,callback)和app.all(’*’,callback)区别
app.use只查看路由是否以指定的路径开头
app.all匹配完整的路径
‘/’,是根路径,那么所有路径进来,都会执行 callback,’/’ 也是 use 的默认 path,callback 是否执行,要看 callback的路径前加上’/'和实际路径是否匹配。
*是一个正则,匹配所有路径,但是只要一个路径进来,可能都会执行 callback。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值