vue解决跨域的几种办法(vue项目中常用解决跨域的方法)
导读:一、什么是跨域?...
一 、什么是跨域?
跨域问题的出现是因为浏览器的同源策略问题 。所谓同源就是必须有以下三个相同点:协议相同 、主机相同 、端口相同 。如果其中有一项不同 ,即出现非同源请求 ,就会产生跨域 。当我们请求一个接口的时候 ,出现如:Access-Control-Allow-Origin 字眼的时候说明请求跨域了
二 、如何解决跨域?
跨域的解决方案:jsonp
cors
Node中间件代理(两次跨域) 即 Proxy
nginx反向代理 CORS支持所有类型的HTTP请求 ,是跨域HTTP请求的根本解决方案
JSONP只支持GET请求 ,JSONP的优势在于支持老式浏览器 ,以及可以向不支持CORS的网站请求数据 。
不管是Node中间件代理还是nginx反向代理 ,主要是通过同源策略对服务器不加限制 。
日常工作中 ,用得比较多的跨域方案是cors和nginx反向代理 主要解释CROS和Proxy两种方式 1 、CROS CROS是 Cross-Origin Resource Sharing的缩写 ,翻译过来就是跨域资源共享的意思 。它由一系列传输的HTTP头组成 ,这些HTTP头会决定浏览器是否阻止前端 JavaScript代码获取跨域请求的响应 。 CORS的实现比较简单方便 ,只需要增加一些 HTTP头 ,让服务器能声明允许的访问来源 。只要后端实现了 CROS就实现了跨域 。 2 、Proxy(代理) 通过启动本地服务器进行代理转发目标服务器 。而跨域只针对于浏览器,对于node服务发出的请求是不会出来跨域的 ,从而解决了跨域的问题 。 在vue.config.js文件 1 、可配置多个不同的proxy devServer: { proxy: { /api: {//代理标识 ,一般是每个接口前的相同部分 target: http://23.15.11.15:8000, // 这里写的是访问接口的域名和端口号 changeOrigin: true, // 允许跨域请求 pathRewrite: { // 重写路径,替换请求地址中的指定路径 ^/api: /user } }, /login: { target: http://23.15.11.15:8000, changeOrigin: true, pathRewrite:{ ^/login: //替换成空 } } } }, 示例: http://localhost:8080/api/test --> http://23.15.11.15:8000/user/test http://localhost:8080/login/index–> http://23.15.11.15:8000/index 2 、对所有的接口都代理 devServer: { proxy: http:/www.ljc.com } 示例: http://localhost:8080/api/test --> http://www.ljc.com/api/test http://localhost:8080/login/index–> http://www.ljc.com/login/index创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!