node.js设置允许跨域访问

设置ajax的跨域请求

解决跨域的方式有很多,本次解决跨域的方案是跨域资源共享(CORS)这里我们以node.js为例设置允许跨域请求。

因为我使用node.js主要使用的是express框架,所以这里也以express框架为例。

// 配置跨域请求中间件(服务端允许跨域请求)
app.use((req, res, next)=> {
    res.header("Access-Control-Allow-Origin", req.headers.origin); // 设置允许来自哪里的跨域请求访问(值为*代表允许任何跨域请求,但是没有安全保证)
    res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS"); // 设置允许接收的请求类型
    res.header("Access-Control-Allow-Headers", "Content-Type,request-origin"); // 设置请求头中允许携带的参数
    res.header("Access-Control-Allow-Credentials", "true"); // 允许客户端携带证书式访问。保持跨域请求中的Cookie。注意:此处设true时,Access-Control-Allow-Origin的值不能为 '*'
    res.header("Access-control-max-age", 1000); // 设置请求通过预检后多少时间内不再检验,减少预请求发送次数
    next();
})

这里的写法有点类似于拦截器,不拦截器是查看req中的session是否存在,而这里是设置请求头,能否跨域的主要设置是res.header("Access-Control-Allow-Origin", req.headers.origin);这一句,这里只需要设置Access-Control-Allow-Origin的值为*即可,表示允许任何跨域请求。一般来说只需要设置上面代码块中的第一句即可实现想要的效果。


上面代码仅做参考,因为刚接触node.js,了解并不深,所以不一定能满足需求,如果想知道更多的跨域设置可以参考下面这位大神的博客
链接: 前端解决跨域的九种方法.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值