前后端hosts配置访问问题解决思路
问题背景:前后端分离情况下后端开发测试需要配置hosts,有此问题的人员有RD,QA,PM,User
测试环境由于用户使用这种配置导致无法使用线上系统发起单据影响用户使用,同时让用户误以为系统出问题而导致增加沟通成本。
问题原理:用户访问的是线上,但是由于本地hosts影响,浏览器加载的资源是测试环境的,导致实际发出的请求是由测试环境发出的,因此用户会以为系统出现问题。
目标:在用户使用出现问题时,给予明确提示和解决方案,减少与RD和PM的沟通成本。
方案调研:
1.后端校验hosts,
问题:java目前可以做到本地hosts检测,由于后端程序是部署到服务器上的,因此无法满足各个PC端的hosts校验。PASS
- 前端校验hosts
问题:js,node等前端语言对文件流等处理不太友好,同时难度较大,相当于重新开发了一套hosts更新工具(网上思路,无法解决根本问题,PASS)
3.C,Python实现
网上有相应的实现思路但是需要客户端安装相应脚本工具,实现难度较大(网上思路,无法根本解决问题,PASS)
4.内网单点登录实现
inpass(内网单点登录系统)目前天生支持对应域名后缀跳转,但是对于线上环境,但是发起请求却是从测试环境发起的无法判断,因此PASS
现在我们重新来看一下问题:
用户访问的是线上,由用户本地环境问题导致系统不可用,因此可以对加载的本地环境进行检测,
由于大部分获取数据接口是采用相对路径,提交单据或者弹框单据等是绝对路径,由此我们需要拿到用户访问的线上系统域名与发起单据请求的域名进行对比,
如果都是以xxxx-inc.com结尾或者以xxxtest.cn结尾的则表示用户的环境是正确的,否则是错误的.
由上所述,我们可以知道,解决方案如下:
1.前端对发起单据或者需要绝对路径匹配的ajax请求进行域名匹配,匹配成功,则正常发起,否则弹框提示或者在控制台打log,提示用户本地环境有问题...
方案优点:
1.简单,后端不用动,前端只要简单开发就可以解决问题,代码量不超过10行。
2.上述逻辑代码不需要部署到线上即可解决问题。即使部署到线上也没有问题,错误提示只在测试环境中产生,用户只要本地环境是正确的即可通过该逻辑。
3.给用户明确提示之后可减少沟通成本,让用户体验更好。
本文由博客一文多发平台 OpenWrite 发布!
架构设计@工程设计@服务稳定性之路
前后端hosts配置访问问题解决思路的更多相关文章
- 使用nginx反向代理处理前后端跨域访问
本文主要解决:使用nginx反向代理处理前后端跨域访问的问题 1.何为跨域访问? 以下类型为跨域访问 1)不同域名间访问 www.zuiyoujie.com和www.baidu.com 2)同域名不同 ...
- vue项目实践-前后端分离关于权限的思路
前后端分离后权限的思路 最近看到许多关于权限的思路,但好像都是使用动态加载路由的方式,现在也分享下我在项目中使用的解决方案. 前后端分离关于权限的处理每个人都不一样,根据项目选择制定合适的方案就好 我 ...
- Node+Express+MongoDB + Socket.io搭建实时聊天应用实战教程(三)--前后端环境配置
前言 之前都是介绍一些基础知识,在这一节,我们就要开始实战coding了.正所谓磨刀不误砍柴工,准备工作显得尤为重要.很多demo只是追求效果的实现,并不注重整个demo的架构性.从我个人的角度看来, ...
- Nginx 前后端分离配置 分发
前端项目VUE 端口8081 , 后端项目JAVA 端口8080 # For more information on configuration, see: # * Official English ...
- Django2.2 Vue 前后端分离 无法访问Cookie
个人验证后可用配置如下: 环境: - Django 2.2 - djangorestframework 3.9 - django-cors-headers 2.5.3 INSTALLED_APPS = ...
- SpringBoot20 集成SpringSecurity02 -> 利用SpringSecurity进行前后端分离的登录验证
1 SpirngBoot环境搭建 创建一个SpringBoot项目即可,详情参见三少的相关博文 参考博文 -> 点击前往 SpirngBoot项目脚手架 -> 点击前往 2 引入Spirn ...
- 【笔记】总结Springboot和Vue前后端分离的跨域问题
跨域一直是个很玄学的问题,SSM的时候又得前后端一起配置,sb的时候又不用. 前端 axios普通get请求 submitForm() { var v=this; this.$axios({ meth ...
- 前端和后端采用接口访问时的调用验证机制(基于JWT的前后端验证)(思路探讨)
说明:基于前后端,尤其是使用Ajax请求的接口,现在市面上网页上调用的Ajax基本都是没有验证的,如果单独提取之后可以无线的刷数据. 继上一篇http://www.cnblogs.com/EasonJ ...
- 在k8s中部署前后端分离项目进行访问的两种配置方式
第一种方式 (1) nginx配置中只写前端项目的/根路径配置 前端项目使用的Dockerfile文件内容 把前端项目编译后生成的dist文件夹放在nginx的html默认目录下,浏览器访问前端项目时 ...
随机推荐
- Ubuntu18.04直接安装python3.7或者升级自带的python3.6版本之后导致终端无法打开的解决办法
安装ptyhon3.7 sudo apt-get update sudo apt-get install python3.7 安装成后的目录在/usr/bin/python3.7,同时将其设置成默认 ...
- android字母索引实现ListView定位
最近闲的很,没什么事干 ,在玩手机的时间看到android系统自带的那个通讯录软件对联系人的快速定位功能. 感觉这个功能也比较实用自己就试着自己去实现. 虽然网络上还是有大牛封闭好了的框架,但是如果 ...
- java的日期时间处理(待更新)
1. /* * 将时间转换为时间戳 */ public static String dateToStamp(String s) throws ParseExcepti ...
- iOS渠道分包2种模式之包内注入文件分包
解决问题:商业模式中会存在这样的形式1款app需要不同的运用团队(工会)去分包推广,谁推广的包下载的人数都会在服务器记录,不同渠道的标示唯一来区分. iOS渠道分包模式有两种 一.IDFA模式 IDF ...
- div模拟select/option解决兼容性问题及增加可拓展性
个人博客: http://mcchen.club 想到做这个模拟的原因是之前使用select>option标签的时候发现没有办法操控option的很多样式,比如line-height等,还会由此 ...
- jmeter从获取token开始设计接口
用自己实习时候的一个项目来实现一下获取token的接口测试 以登录dmp的学科列表为例子: 从登录开始,打开开发者选项 点击登录 在开发者窗口中network xhr Fildder中,看登录时的请求 ...
- php企业微信获取员工userid以及打卡信息
企业微信可以通过部门列表获取部门下的员工信息,从而获取到员工的userid //首先获取需要的access_token $access_token = json_decode($this->ge ...
- restTemplate getForObject中map传参问题
在使用restTemplate中getForObject的map传参形式时: 开始时我是这么调用的: RestTemplate rest = new RestTemplate(); Map<St ...
- python入门之jieba库的使用
对于一段英文,如果希望提取其中的的单词,只需要使用字符串处理的split()方法即可,例如“China is a great country”. 然而对于中文文本,中文单词之间缺少分隔符,这是中文 ...
- 古剑奇谭三已取消该页导航,B站版本无法登陆
最近登陆古剑三突然出现这个问题 怎么重开也无法登陆 最后发现是Ie设置问题 解决方法 点中间这个圆形图标打开 小娜 搜索“ie” 点击打开ie之后点右上角的小齿轮 选择“internet选项” 连接- ...