跨域浏览器解决前端跨域问题

1.问题背景

这是一种属于非主流的解决跨域的方案,但是也是可以正常使用而且比较简单的。如果需要使用主流的解决前端跨域方案,请参考这篇文章

我这边其实是优先建议大家使用主流的跨域方案,如果主流的实在不行,那么就使用跨域浏览器也可以处理。今天我这边遇到的问题就是,因为有一个几年前的项目要去增加需求,但是在开发环境,有几个接口一直报跨域问题,跟后台反馈了,但是后台也处理不好。于是我想去做一个本地的代理,发现这个是用webpack自己搭的项目,然后改了配置也不生效(不清楚是哪里的问题)。所以试了两种方案都不行,那么果断放弃不浪费时间,直接制作一个跨域浏览器先联调接口再说,反正线上是不会有这个跨域问题的。

跨域浏览器:其实就是直接关闭浏览器的跨域检测

2.如何制作一个跨域浏览器

a.桌面谷歌浏览器的入口复制一份粘贴到桌面

image.png

b.右键这个谷歌浏览器副本,然后点击属性

image.png

c.先在d盘建一个文件夹,然后在属性修改目标中的参数

建好文件夹MyChromeDevUserData
image.png
添加代码
image.png
添加的代码如下:

--disable-web-security --user-data-dir=D:\MyChromeDevUserData

注意:
1.注意添加的代码要在"号后面
2."号后面跟这句代码之间要有空格
3.D:\MyChromeDevUserData这个可以替换成自己的文件位置(也可以不替换,按我的步骤走就行)。就是你在哪个盘建的哪个文件夹,你就写该文件夹的路径就行。该文件夹主要是用来存放浏览器数据的。

d.最后点击应用和确定就行了,打开这个浏览器副本,如果是这种页面就说明成功了。

然后就是你跑项目打开的浏览器要用这个浏览器副本(跨域浏览器)打开,如果你是用之前的正常浏览器来打开的话,还是会有跨域。

总结

优点:不需要你有任何的开发经验都可解决,如果你是纯新手,用这种方式反而更快。
缺点:
1.不通用性。只能解决自己的跨域问题,并不能解决其他前端同事的,如果同事也要处理,则也需要制作一个跨域浏览器。但是一般来说一个项目的前端也就1-2个人,所以这种方式适用于人不多的项目。
2.不便于维护。后面的人不知道你是用这种方案解决跨域的话,就挺难受的
3.只能用自己制作的跨域浏览器打开才不会跨域,用其他正常的浏览器打开还是会跨域的。

参考:

1.解决浏览器跨域访问:https://blog.csdn.net/w_shimmer/article/details/124341672

### Vue3 前端解决方案 在 Vue3 项目中,解决前端问题可以通过多种方法实现。以下是两种常见的解决方案:Nginx 配置代理以及 CORS 的设置。 #### 方法一:通过 Nginx 实现接口代理 为了使前端能够访问后端 API 并规避浏览器的同源策略限制,可以借助 Nginx 来完成反向代理的功能。这种方式无需修改后端逻辑即可解决问题[^1]。 具体操作如下: - 修改 `nginx.conf` 文件,在其中定义一个新的 location 路径用于匹配需要代理的目标地址。 ```nginx server { listen 80; server_name localhost; location /api/ { proxy_pass http://backend_server_url/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { root html; index index.html index.htm; } } ``` 上述配置表示当客户端请求 `/api/*` 接口时,实际会转发到指定的后端服务 URL 上。 #### 方法二:创建 vue.config.js 进行本地开发环境下的代理 如果是在开发阶段遇到问题,则可以直接在 Vue CLI 中添加一个名为 `vue.config.js` 的文件来进行简单的 HTTP 请求重定向处理。 下面是一个典型的例子: ```javascript module.exports = { devServer: { proxy: { '/api': { // 替换为你的API路径前缀 target: 'http://your-backend-server-url', // 后端服务器的真实URL changeOrigin: true, pathRewrite: {'^/api' : ''} // 可选参数, 如果不需要保留/api则去掉这个选项或者调整正则表达式 } } } }; ``` 这样做的好处在于它只适用于开发模式下运行的应用程序,并不会影响生产环境中部署的服务行为[^2]。 #### 方法三:CORS (Cross-Origin Resource Sharing) 另一种更通用但也稍微复杂一点的办法就是让后端支持资源共享(CORS),即允许来自不同名下的资源加载和交互。这通常涉及到更改 Web 应用框架中的响应头信息以便告知浏览器哪些外部站点被授权可执行特定类型的HTTP动作。 例如对于 Express NodeJS 应用来说,只需安装 cors npm 包并应用中间件就可以轻松开启全局范围内的许可功能: ```javascript const express = require('express'); const cors = require('cors'); let app = express(); app.use(cors()); // 定义路由... ``` 以上三种方式都可以有效缓解甚至彻底消除由于违反同源安全机制而导致的各种麻烦状况;然而需要注意的是每种技术都有其适用场景,请根据实际情况合理选用最合适的那一种!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值