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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux Platform Device and Driver,platform_add_devices()->platform_driver_register()

    Linux Platform Device and Driver,platform_add_devices()->platform_driver_register()
    来自:http://www.diybl.com/course/6_system/linux/Linuxjs/200871/129585.html
    从Linux2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。
        Linux中大部分的设备驱动,都可以使用这套机制,设备用Platform_device表示,驱动用Platform_driver进行注册。
     
       

    2022年7月24日
    10
  • wing是什么_可分开四叶草项链

    wing是什么_可分开四叶草项链在 Mars 星球上,每个 Mars 人都随身佩带着一串能量项链,在项链上有 N 颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是 Mars 人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为 m,尾标记为 r,后一颗能量珠的头标记为 r,尾标记为 n,则聚合后释放的能量为 m×r×n(Mars 单位),新产

    2022年8月9日
    8
  • 理解Go语言的nil[通俗易懂]

    理解Go语言的nil[通俗易懂]   转载地址:https://studygolang.com/articles/9506   最近在油管上面看了一个视频:Understandingnil,挺有意思,这篇文章就对视频做一个归纳总结,代码示例都是来自于视频。nil是什么相信写过Golang的程序员对下面一段代码是非常非常熟悉的了:iferr!=nil{//dosomething…

    2025年5月26日
    3
  • phpstorm PhpStorm 2021.3.20 激活码 3月最新注册码

    phpstorm PhpStorm 2021.3.20 激活码 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    36
  • python 安装whl文件「建议收藏」

    python 安装whl文件「建议收藏」python安装whl文件使用场景:在terminal中通过pipinstall命令进行第三方模块安装时,由于网络获其他原因会使得第三方模块下载失败,导致安装失败。此时,我们可以先通过下载网址将第三方模块包手动下载到本地,再手动进行安装。许多第三方模块包为whl文件,这就…

    2022年5月30日
    63
  • 常见数据库简答题_数据库基础知识试题

    常见数据库简答题_数据库基础知识试题数据库简答题第一章1.简述数据、数据库、数据库管理系统、数据库系统的概念(期末题库、课后题、大纲要求、试题三)数据:描述事物的符号记录数据库:(什么是数据库?答下面所有)长期存储在计算机内、有组织、可共享的大量数据的集合基本特征:(1)数据按照一定的数据模型组织、描述和存储(2)可为各种用户所共享(3)具有较小的冗余度(4)数据独立性较高(5)易扩展性数据库管理系统:(什么是数据库管理系统?答下面所有)(2001研招)位于用户与操作系统之间的一层数据管理软件,他与操作系统一样都是计

    2022年9月19日
    3

发表回复

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

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