vue项目打包后怎样优雅的解决跨域


Posted in Javascript onMay 26, 2019

前言

在使用vue.js开发前端项目时,再结合webpack搞起各种依赖、各种插件进行开发,无疑给前端开发带来了很多便捷,就在解决跨域这个问题上,相信众多用vue.js的前端同僚们同我一样尝到了甜头,开发环境全靠proxyTable一通配置简直不要太酸爽。还不明所以然的新手们可能还没搞清我说的是什么,就是下面这几行配置:

proxyTable: {
   '/api': {
    target: 'http://113.113.113.113:5000', //假的接口地址哈
    changeOrigin: true,
    pathRewrite: {
     '^/api': ''
    }
   },

我们的跨域竟然就这样完美的解决了,然后就开始愉快的请求后端的接口啦!!

回到正题

具体场景:公司的一个h5项目是部署在客户端的,但是部署后出现bug了,由于多人协同开发且赶进度竟然是打包后因为CSS的问题多个页面布局乱了,但是开发环境并没有问题啊,怎么打完包样式就乱了?那就打开dist下的index.html看看呗,复现一下bug,想都不用想,页面没数据怎么复现,再去造一套假数据?作为一个不喜欢这样折腾的人必然是不想做这种事情的。

就不劳烦后端了,咱自己解决!

nginx 还是要会一些些的,自己配置一下,分分钟解决,哈哈!

server {
    listen    8082;
    server_name 127.0.0.1; //咱自己nginx服务器地址

    #charset koi8-r;

    #access_log logs/host.access.log main;

    location / {
      root  html;
      index index.html index.htm;
    }
  location /app-api {
      rewrite ^.+app-api/?(.*)$ /$1 break;
      include uwsgi_params;
      proxy_pass  http://113.113.113.113:5001/; //后端接口地址
      //关键部分start
      add_header Access-Control-Allow-Origin *;
      add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
      add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,token';
      //关键部分end
      //以下配置参见nginx配置文档哈
      #Proxy Settings
      proxy_redirect   off;
      proxy_set_header  Host       $host;
      proxy_set_header  X-Real-IP    $remote_addr;
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header  Connection    close;
      proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
      proxy_max_temp_file_size 0;
      proxy_connect_timeout   90;
      proxy_send_timeout     90;
      proxy_read_timeout     90;
      proxy_buffer_size     4k;
      proxy_buffers       4 32k;
      proxy_busy_buffers_size  64k;
      proxy_temp_file_write_size 64k;
    }
}

目的是把后端接口用 nginx 再代理一遍,咱自己用 nginx 间接允许一下跨域请求!

start nginx //在nginx目录启动服务

通常我们会做一个统一的管理接口的js文件,如下形式

var BASE_URL = '/api';
var isPro = process.env.NODE_ENV === 'production'
if(isPro){
 BASE_URL= 'http://113.113.113.113:5000', //线上或者测试地址
 //BASE_URL= 'http://127.0.0.1:8020', //nginx代理地址
 //当我们需要打包后依然能正常调接口的时候用这个  
}
const UrlConfig = {
 getToken:BASE_URL + "某接口"
}
export default {
 UrlConfig
};

至此,就把打包后接口跨域的问题优雅的解决啦。

结语

因为公司的前后端项目通常都放在同一台服务器,或者不在同一台服务器的时候跨域也是靠后端的同志们去解决的,所以很少在生产环境中靠前端解决跨域的这项需求。不过我分享的这个小技巧也只适用于以上类似场景中,归根结底还是要在多人协同开发的过程中提前规划好公共以及个人的编程规范,尽量保证开发环境和生产环境是一致的,就可以摆脱很多类似的问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
我遇到的参数传递中 双引号单引号嵌套问题
Feb 11 Javascript
jQuery 名称冲突的解决方法
Apr 08 Javascript
JavaScript 中的日期和时间及表示标准介绍
Aug 21 Javascript
JavaScript如何从listbox里同时删除多个项目
Oct 12 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
Nov 07 Javascript
JavaScript中的类数组对象介绍
Dec 30 Javascript
Jquery搜索父元素操作方法
Feb 10 Javascript
jQuery each函数源码分析
May 25 Javascript
深入理解jquery中extend的实现
Dec 22 Javascript
jQuery遍历节点方法汇总(推荐)
May 13 jQuery
Vue.js学习笔记之常用模板语法详解
Jul 25 Javascript
JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码
Sep 07 Javascript
vue实现的上拉加载更多数据/分页功能示例
May 25 #Javascript
vue实现的请求服务器端API接口示例
May 25 #Javascript
Vue Autocomplete 自动完成功能简单示例
May 25 #Javascript
泛谈JS逻辑判断选择器 || &&
May 24 #Javascript
了解JavaScript中的选择器
May 24 #Javascript
Javascript通过控制类名更改样式
May 24 #Javascript
redux.js详解及基本使用
May 24 #Javascript
You might like
global.php
2006/12/09 PHP
使用PHP强制下载PDF文件示例
2014/01/17 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
2017/08/08 jQuery
Vue-Router模式和钩子的用法
2018/02/28 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
2018/05/29 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
python爬虫 爬取超清壁纸代码实例
2019/08/16 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
购买大码女装:Lane Bryant
2016/09/07 全球购物
实习单位接收函
2014/01/11 职场文书
西式婚礼证婚词
2014/01/12 职场文书
认购协议书范本
2014/04/22 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
刘公岛导游词
2015/02/05 职场文书
人民的好儿女观后感
2015/06/18 职场文书
初中体育课教学反思
2016/02/16 职场文书
再次探讨go实现无限 buffer 的 channel方法
2021/06/13 Golang
python中Matplotlib绘制直线的实例代码
2021/07/04 Python
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers