vue 代理本地api请求跨越问题

本文介绍了在前端开发中遇到浏览器跨域问题时的两种常见解决方法。第一种是在Vue项目的vue.config.js中配置代理,将前端请求转发至目标服务器,避免跨域限制。第二种方法是针对Chrome浏览器,通过修改快捷方式的目标路径,添加参数来禁用web安全,允许跨域。但这种方法可能不适用于所有版本的Chrome,并且存在安全隐患。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、当前端接口要访问服务端接口是存在的浏览器跨越的时候,常用的两种做法:

第一种:从前端代码下手,配置代理

①在.env.development文件中找到你要访问的api:

登录接口
VUE_APP_BASE_API = '/login'

②在vue.config.js文件中进行代理配置

module.exports = {
    publicPath: "./",
    runtimeCompiler: true,
    productionSourceMap: false,
    devServer: {
        port: port,
        open: true, //配置自动启动浏览器
        proxy: {
            [process.env.VUE_APP_BASE_API]: { // 这个是你env里面配置的相应名称
                target:`http://baidu.com/login`, // 这个是你要访问服务端的地址
                changeOrigin: true,
                pathRewrite: {
                    ["^" + process.env.VUE_APP_UPGRADE_API]: "",
                },
            },
        }
    }
};

第二种:以Chrome为例,直接给你的浏览器配置在浏览器中允许跨越,这种配置可以让你之后在浏览器上运行的页面都自动允许跨越。

 1. Chrome 版本小于49

设置步骤:
在Chrome的快捷图标上鼠标右键 --> 属性 --> 目标 --> 在原chrome路径的基础上加上 --disable-web-security --> 应用。
之后关闭所有chrome,点击Chrome的快捷图标,重新启动浏览器,如果看到地址栏下面有个小黄条——你使用的是不受支持的命令标记 --disable-web-security,就是设置成功了。

2. Chrome 版本大于49

设置步骤和上面类似,就是在原chrome路径的基础上加上的代码串不一样。
建议:发送一个快捷方式到桌面,重命名下,然后在这个快捷方式上面进行配置。
设置步骤:
在Chrome的快捷图标上鼠标右键 --> 属性 --> 目标 --> 在原chrome路径的基础上加上 --disable-web-security --user-data-dir=C:\Chrome --> 应用。(注意:以上的字符串加在原路径引号外面,且要有空格间隔。)
其中,C:\Chrome 是你本地硬盘的一个目录,最好自己新建一个,上面的目录路径换成自己新建的目录即可。

3. Mac系统

MAC 上Chrome跨域设置,是直接终端敲命令设置,不过每次mac重启后,都要重新执行命令。
设置步骤:

新建一个目录。用于存放保存关闭安全策略后的用户信息的,名称和位置随意。
在终端中输入:open -n /Applications/Google\ Chrome.app/ --args --disable-web-security --user-data-dir=/Users/Vic/Documents/Chrome
其中,/Users/Vic/Documents/Chrome 对应步骤1新建目录的路径

Vue.js项目打包(通常使用Webpack或者其他构建工具)之前处理跨域问题,可以采取以下几种方法: 1. **配置服务器**: 如果你是后端开发者,可以在服务器端设置允许特定来源的跨域请求。例如,在Node.js的Express应用中,可以添加中间件如`cors`: ```javascript const express = require('express'); const cors = require('cors'); app.use(cors({ origin: 'http://your-domain.com', // 更改为你需要的源地址 credentials: true, })); ``` 2. **JSONP**: 对于只支持GET请求并且目标域名与当前域名相同的简单请求,可以尝试使用JSONP。 3. **代理** (Webpack dev server): 在Webpack的开发环境中,可以使用`proxy`选项来转发非同源请求到指定的服务器。例如,在`.webpack.dev.conf.js`文件中: ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'https://api.example.com', changeOrigin: true, }, }, }, }; ``` 4. **CORS插件**: 使用像`axios`这样的库,你可以配置它在发送异步请求时自动处理CORS。比如: ```javascript axios.defaults.withCredentials = true; axios.interceptors.request.use(config => { if (process.env.NODE_ENV === 'development') { config.headers.common['X-Custom-Header'] = 'some-value'; } return config; }, error => Promise.reject(error)); ``` 5. **预设响应头**: 在服务端,设置Access-Control-Allow-Origin、Access-Control-Allow-Methods等HTTP头部,允许特定的跨域请求。 完成后记得检查浏览器的网络请求头是否包含正确的跨域信息。如果项目已经打包并部署,上述方法就无法直接用了,你需要在生产环境的服务器上配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Root1216

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值