反向代理

反向代理

一 : 说明

  • 解决跨域问题的方式 :
    • JSONP == > 只能处理 get 方式
    • CORS ==> 处理自己的服务器,如果要其他服务器,需要后台支持
    • 反向代码 ==> 也很常用
  • 说明
    1. 演示跨域问题
    2. 反向代理的原理(本地的代理服务器),浏览器-都是本地->本地代理-都是服务器->后端服务器
    3. 脚手架vue-cli 生成的项目中如何使用反向代理

二 : 演示跨域问题

测试真实请求接口 : https://api.douban.com/v2/movie/in_theaters

  1. todo-vuex 里的 app.vue 中 的js 代码区域演示

  2. 安装 axios

  3. 代码 :

    // 演示跨域问题
    /* eslint-disable */
    import axios from 'axios';
    
    axios.get('https://api.douban.com/v2/movie/in_theaters').then(res => {
      console.log(res)
    })
    
  4. 报错 :

    Access to XMLHttpRequest at 'https://api.douban.com/v2/movie/in_theaters' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
    
  5. 报错原因

    - 项目运行在  http://localhost:8080
      //  I  Your application is running here: http://localhost:8080  
    - 发送ajax请求 : //域名是 https://api.douban.com/v2/movie/in_theaters
    - 出现跨域问题
    

三 : 反向代理的原理

  • 反向代理的原理(本地的代理服务器),浏览器-都是本地->本地代理-都是服务器->后端服务器

四 : 演示

  • 修改 config/index.js 配置文件
  proxyTable: {
      '/myapi': {
        // 代理的目标服务器地址
        // https://api.douban.com/v2/movie/in_theaters
        // /myapi/movie/in_theaters
        target: 'https://api.douban.com/v2',
        pathRewrite: { '^/myapi': '' },
        //如果访问的协议头是https,则需要下面设置
        //如果是http,则不需要
        // 设置https
        secure: false,
        // 必须设置该项
        changeOrigin: true
      }
    },
  • 最终代码

    // axios.get('https://api.douban.com/v2/movie/in_theaters').then(res => {
    axios.get("http://localhost:8080/api/movie/in_theaters").then(res => {
      console.log(res);
    });
    
  • 最终配置:

      proxyTable: {
          '/myapi': {
            // 代理的目标服务器地址
            // https://api.douban.com/v2/movie/in_theaters
            // /myapi/movie/in_theaters
            target: 'https://api.douban.com/v2',
            pathRewrite: { '^/myapi': '' },
    
            // 设置https
            secure: false,
            // 必须设置该项
            changeOrigin: true
          }
        },
    
  • 重新启动 : npm run dev

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值