当前位置: 首页 > 后端技术 > Node.js

节点设置cors,后端解决跨域问题

时间:2023-04-03 14:09:13 Node.js

跨域讲的太多了,这里就不多说了。是浏览器web的同源策略造成的。目前前端和后端跨域都可以解决。今天主要说一下后端CORS常用的解决方案:W3C标准技术,主要全称是Cross-OriginResourceSharing,中文叫做跨域资源共享技术,官网:'https://www.w3.org/TR/cors/',如果想看这个官网的解释,可以看看下面的简单解释是当代浏览器将跨站异步访问权限交给CORS解决跨域问题。通常有两种设置方法。本文案例以node为例,代码方式一:直接使用npm里面的cors包,简单粗暴。**安装包npminstallcors-S**constapp=express();//基于node中的expressserver//我这里使用中间件varcors=require("cors");app.use(cors());//下面的代码会介绍我的后端接口,类似一个react.js,通过expressrouting导入后,服务端接口配置完成,这个方法太暴力了,解决了设置所有请求头和方法的繁琐问题,而如何携带cookie的缺点,显然不适合第二种方式:同样是基于express中间件设置,但是会设置具体的请求头和请求方式,可以携带cookie。constexpress=require('express')constapp=express();app.use((req,res,next)=>{//判断路径if(req.path!=='/'&&!req.path.includes('.')){res.set({'Access-Control-Allow-Credentials':true,//允许后台发送cookies'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'//默认和允许的文本格式json和编码格式})}req.method==='OPTIONS'?res.status(204).end():next()})addOPTIONS:OPTIONS方法用于请求被Request-URI标识的请求/响应通信时可用的资源选项。通过这种方法,客户端可以在进行特定的资源请求之前决定对该资源采取哪些必要的措施,或者了解服务器的性能。我们常见的请求是get或者post,那么在哪里查看options请求,看图:至于后者端是java还是php,也可以这样设置,只是写法不同