vue项目中常用解决跨域的方法总结(CORS和Proxy)

作者:是大林的林吖 时间:2024-04-28 09:33:05 

一、什么是跨域?

跨域问题的出现是因为浏览器的同源策略问题。所谓同源就是必须有以下三个相同点:协议相同、主机相同、端口相同。如果其中有一项不同,即出现非同源请求,就会产生跨域。当我们请求一个接口的时候,出现如: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

来源:https://blog.csdn.net/qq_45616003/article/details/125556040

标签:vue,跨域,cors
0
投稿

猜你喜欢

  • opencv+mediapipe实现人脸检测及摄像头实时示例

    2022-08-11 17:58:44
  • virtualenv实现多个版本Python共存

    2021-11-27 00:50:44
  • SQL Select语句完整的执行顺序

    2008-09-28 21:22:00
  • Mysql事务处理详解

    2024-01-21 18:15:27
  • python虚拟环境迁移方法

    2021-09-13 07:52:51
  • 详解python安装matplotlib库三种失败情况

    2023-08-09 15:03:29
  • php cli换行示例

    2024-05-03 15:50:59
  • ASP使用MYSQL数据库全攻略

    2009-11-08 18:27:00
  • python数字图像处理之骨架提取与分水岭算法

    2023-03-07 15:59:50
  • numpy给array增加维度np.newaxis的实例

    2023-06-30 06:41:34
  • CentOS7.4手动安装MySQL5.7的方法

    2024-01-28 01:12:20
  • Python基于Faker假数据构造库

    2021-06-05 15:32:19
  • 设计模式-自动完成

    2010-11-30 21:44:00
  • Sublime中View in Browser功能不生效问题及解决

    2022-07-03 05:48:16
  • js 遍历json返回的map内容示例代码

    2024-04-16 10:32:32
  • 深入浅析SQL Server 触发器

    2024-01-19 05:23:55
  • 用Python的urllib库提交WEB表单

    2023-06-11 00:14:52
  • 浅谈MySQL中的自增主键用完了怎么办

    2024-01-24 07:51:50
  • mysql 8.0.18 安装配置优化教程

    2024-01-19 22:43:59
  • PHP mysql_result()函数使用方法

    2023-06-13 08:21:29
  • asp之家 网络编程 m.aspxhome.com