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,了解并不深,所以不一定能满足需求,如果想知道更多的跨域设置可以参考下面这位大神的博客
链接: 前端解决跨域的九种方法.

你可能感兴趣的:(笔记,node.js)