vue项目打包后怎样优雅的解决跨域
作者:不一 发布时间:2024-04-29 13:11:03
前言
在使用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
};
至此,就把打包后接口跨域的问题优雅的解决啦。
结语
因为公司的前后端项目通常都放在同一台服务器,或者不在同一台服务器的时候跨域也是靠后端的同志们去解决的,所以很少在生产环境中靠前端解决跨域的这项需求。不过我分享的这个小技巧也只适用于以上类似场景中,归根结底还是要在多人协同开发的过程中提前规划好公共以及个人的编程规范,尽量保证开发环境和生产环境是一致的,就可以摆脱很多类似的问题。
来源:https://segmentfault.com/a/1190000019294027


猜你喜欢
- 本文实例讲述了Python tkinter模块弹出窗口及传值回到主窗口操作。分享给大家供大家参考,具体如下:有些时候,我们需要使用弹出窗口,
- 利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份
- Vue金额、日期格式化插件@formatjs/intl使用vue项目中我们可以使用第三方比较牛的日期、金额数字格式化的插件:@formatj
- 开发环境:Ubuntu16.04+Django 1.11.9+Python2.7一:使用自定义函数输出日志到log文件:import tim
- <html> <head> <meta http-equiv="Content-Type"
- 1.计算长度value = "wangdianchao"# 计算字符个数(长度)number = len(value)p
- ThinkPHP CURD方法的limit方法也是模型类的连贯操作方法之一,主要用于指定查询和操作的数量,特别在分页查询的时候使用较多。并且
- 改变conda虚拟环境的默认路径conda环境默认安装在用户目录C:\Users\username.conda\envs下,如果选择默认路径
- 这次我使用ADO.NET来插入一条数据,到数据库中。主用到存储过程。我不想每次都是用SQL文本的形式了,那样始终没有进步~~~下面首先,我把
- 常用时间转换及处理函数:import datetime# 获取当前时间d1 = datetime.datetime.now()print d
- 本文主要介绍了python图片转为矢量图,分享给大家,具体如下:import numpy as npimport matplotlib.py
- 曲线一解释这里是使用matplotlib来绘制正态分布的曲线。代码实现import numpy as npimport matplotlib
- 背景使用python操作一批同样分辨率的图片,合并为tiff格式的文件。由于opencv主要用于读取单帧的tiff文件,对多帧的文件支持并不
- 为什么训练误差比测试误差高很多?一个Keras的模型有两个模式:训练模式和测试模式。一些正则机制,如Dropout,L1/L2正则项在测试模
- 目录1. np.multiply()函数1.1数组场景1.2 矩阵场景2. np.dot()函数2.1 数组场景2.2 矩阵场景3. 星号(
- 我们平时需要使用 Python 发送各类邮件,这个需求怎么来实现?答案其实很简单,smtplib 和 email 库可以帮忙实现这个需求。s
- 本文实例为大家分享了JS实现用户管理系统的具体代码,供大家参考,具体内容如下效果图:html代码: <h1>
- 如下所示:try:a=1except Exception as e: print (e)import tracebackimport sys
- 乱码问题破解压缩包时候会存在中文乱码问题!1:直接使用Everything搜索出要修改的库文件 zipfile.py ,并用notepad+
- 数字范围:922337203685477~-922337203685477函数代码如下: <%Public Fun