vue:详解vue中的代理proxy

vue:详解vue中的代理proxy问题我们本地调试一般都是 npmrunserve 然后打开本机 ip 8080 localhost 8080 对吧 这时候我们要调接口调试 后端的接口的地址可能在测试环境 也可能是自己电脑的 ip 总之不是你的 lcoalhost 8080 那么你调接口就会产生跨域 那么怎么办呢 就需要 proxy 出场了复习一下跨域的解决方案 jsonpcorsNod 中间件代理 两次跨域 nginx 反向代理 CORS 支持所有类型的 HTTP 请求 是跨域 HTTP 请求的根本解决方案 JSONP 只支持 GET 请求

问题

我们本地调试一般都是 npm run serve,然后打开 本机ip:8080localhost:8080)对吧,这时候我们要调接口调试,后端的接口的地址可能在测试环境,也可能是自己电脑的 ip,总之不是你的 lcoalhost:8080,那么你调接口就会产生跨域,那么怎么办呢?就需要proxy出场了

复习一下跨域的解决方案

  1. jsonp
  2. cors
  3. Node中间件代理(两次跨域)
  4. nginx反向代理
  • CORS支持所有类型的HTTP请求,是跨域HTTP请求的根本解决方案
  • JSONP只支持GET请求,JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。
  • 不管是Node中间件代理还是nginx反向代理,主要是通过同源策略对服务器不加限制。

原理

vue 中的 proxy 就是利用了 Node 代理,原理还是因为服务器端没有跨域这一说嘛,也是用了这么一个插件 地址

场景

1、假设你要调取的接口是 http://e.dxy.net/api/test,然后你可以在本地调 localhost:8080/api/test,如axios.get('/api/test')
配置代理后,会做如下转发:
localhost:8080/api/test -> http://e.dxy.net/api/test
localhost:8080/bcma/api/test -> http://e.dxy.net/bcma/api/test


//vue-cli3.0 里面的 vue.config.js做配置 devServer: { 
    proxy: { 
    '/api': { 
    target: 'http://e.dxy.net', // 后台接口域名 ws: true, //如果要代理 websockets,配置这个参数 secure: false, // 如果是https接口,需要配置这个参数 changeOrigin: true, //是否跨域 } } } 

2、当你调接口后端的命名没有统一给接口前加 /api 这类的标识,那么你可以自己加,也就是你可以在本地调 localhost:8080/api/test,如axios.get('/api/test'),而你要的目标接口是 http://e.dxy.net/test,你就可以用 pathRewrite,遇到 /api 就去找代理 http://e.dxy.net 并且把 /api 重写为 /
所以转发效果就是:
localhost:8080/api/test -> http://e.dxy.net/test

//vue-cli3.0 里面的 vue.config.js做配置 devServer: { 
    proxy: { 
    '/api': { 
    target: 'http://e.dxy.net', // 后台接口域名 ws: true, //如果要代理 websockets,配置这个参数 secure: false, // 如果是https接口,需要配置这个参数 changeOrigin: true, //是否跨域 pathRewrite:{ 
    '^/api': '/' } } } } 

3、这个是对所有的接口都代理的,不止是检测到 /api 的接口,比如:
localhost:8080/api/test -> http://e.dxy.net/api/test
localhost:8080/test -> http://e.dxy.net/test

devServer: { 
    proxy: 'http://e.dxy.net' } 

扩展几个常用的devServer配置

module.exports = { 
    //... devServer: { 
    disableHostCheck: true } }; 
module.exports = { 
    //... devServer: { 
    publicPath: '/assets/' } }; 

确保devServer.publicPath始终以正斜杠开头和结尾。

扩展几个vue/cli3的配置

完整版本

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233323.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 代码加密 android,Android 开发怎样做代码加密或混淆「建议收藏」

    代码加密 android,Android 开发怎样做代码加密或混淆「建议收藏」原标题:Android开发怎样做代码加密或混淆对于Android开发技术人员来说,隐藏代码或是混淆代码至关重要。试想自己辛辛苦苦赶工出来的产品,被其他开发者反编译后轻松拿走。放在哪里都是一件让人崩溃的事情。华清创客学院Android开发讲师在这里和读者一起交流一下怎样做代码加密或混淆这个问题?Android开发怎样做代码加密或混淆:通常来说Proguard对一般用途来说足够了,但是也需要注意…

    2022年5月17日
    33
  • 解决问题:jar中没有主清单属性「建议收藏」

    解决问题:jar中没有主清单属性「建议收藏」pom.xml文件中添加:<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configurat

    2025年9月12日
    7
  • pr添加删除关键帧_pr怎么全选关键帧

    pr添加删除关键帧_pr怎么全选关键帧使用的版本依旧是PrProCC2017添加关键帧双击需要添加关键帧的素材左边指向区域双击后,区域会变大,鼠标滚轮滑动效果一样然后点击素材,在点左侧的指向区域的小点点,添加或删除关键帧点

    2022年8月3日
    11
  • 设计模式(一)工厂模式Factory(创建类型)

    设计模式(一)工厂模式Factory(创建类型)

    2021年12月31日
    55
  • 每天一道算法_4_Hangover

    此系列刚开始两天就被十一假期打断了,去山西玩了几天,今天刚回来,为了弥补一下心里的貌似隐隐作痛的愧疚感,补上一刀。今天的题目是 Hangover,如下: DescriptionHow far can you make a stack of cards overhang a table? If you have one card, you can create a max

    2022年3月10日
    36
  • SpringIoc 实现原理

    SpringIoc 实现原理什么是SpringIOCspringioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,…

    2022年6月18日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号