vue项目中常用解决跨域的方法

编程知识 更新时间:2023-05-01 22:59:03

一、什么是跨域?

跨域问题的出现是因为浏览器的同源策略问题。所谓同源就是必须有以下三个相同点:协议相同、主机相同、端口相同。如果其中有一项不同,即出现非同源请求,就会产生跨域。当我们请求一个接口的时候,出现如: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'
}
示例:
  • http://localhost:8080/api/test --> http://www.ljc/api/test
  • http://localhost:8080/login/index–> http://www.ljc/login/index

更多推荐

vue项目中常用解决跨域的方法

本文发布于:2023-04-24 10:05:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/73edc412a005af584111aa6a8549410c.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:常用   方法   项目   vue

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 100258文章数
  • 26023阅读数
  • 0评论数