问题背景:前后端分离情况下后端开发测试需要配置hosts,有此问题的人员有RD,QA,PM,User

测试环境由于用户使用这种配置导致无法使用线上系统发起单据影响用户使用,同时让用户误以为系统出问题而导致增加沟通成本。

问题原理:用户访问的是线上,但是由于本地hosts影响,浏览器加载的资源是测试环境的,导致实际发出的请求是由测试环境发出的,因此用户会以为系统出现问题。

目标:在用户使用出现问题时,给予明确提示和解决方案,减少与RD和PM的沟通成本。

方案调研:

1.后端校验hosts,

问题:java目前可以做到本地hosts检测,由于后端程序是部署到服务器上的,因此无法满足各个PC端的hosts校验。PASS

  1. 前端校验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配置访问问题解决思路的更多相关文章

  1. 使用nginx反向代理处理前后端跨域访问

    本文主要解决:使用nginx反向代理处理前后端跨域访问的问题 1.何为跨域访问? 以下类型为跨域访问 1)不同域名间访问 www.zuiyoujie.com和www.baidu.com 2)同域名不同 ...

  2. vue项目实践-前后端分离关于权限的思路

    前后端分离后权限的思路 最近看到许多关于权限的思路,但好像都是使用动态加载路由的方式,现在也分享下我在项目中使用的解决方案. 前后端分离关于权限的处理每个人都不一样,根据项目选择制定合适的方案就好 我 ...

  3. Node+Express+MongoDB + Socket.io搭建实时聊天应用实战教程(三)--前后端环境配置

    前言 之前都是介绍一些基础知识,在这一节,我们就要开始实战coding了.正所谓磨刀不误砍柴工,准备工作显得尤为重要.很多demo只是追求效果的实现,并不注重整个demo的架构性.从我个人的角度看来, ...

  4. Nginx 前后端分离配置 分发

    前端项目VUE  端口8081 , 后端项目JAVA 端口8080 # For more information on configuration, see: # * Official English ...

  5. Django2.2 Vue 前后端分离 无法访问Cookie

    个人验证后可用配置如下: 环境: - Django 2.2 - djangorestframework 3.9 - django-cors-headers 2.5.3 INSTALLED_APPS = ...

  6. SpringBoot20 集成SpringSecurity02 -> 利用SpringSecurity进行前后端分离的登录验证

    1 SpirngBoot环境搭建 创建一个SpringBoot项目即可,详情参见三少的相关博文 参考博文 -> 点击前往 SpirngBoot项目脚手架 -> 点击前往 2 引入Spirn ...

  7. 【笔记】总结Springboot和Vue前后端分离的跨域问题

    跨域一直是个很玄学的问题,SSM的时候又得前后端一起配置,sb的时候又不用. 前端 axios普通get请求 submitForm() { var v=this; this.$axios({ meth ...

  8. 前端和后端采用接口访问时的调用验证机制(基于JWT的前后端验证)(思路探讨)

    说明:基于前后端,尤其是使用Ajax请求的接口,现在市面上网页上调用的Ajax基本都是没有验证的,如果单独提取之后可以无线的刷数据. 继上一篇http://www.cnblogs.com/EasonJ ...

  9. 在k8s中部署前后端分离项目进行访问的两种配置方式

    第一种方式 (1) nginx配置中只写前端项目的/根路径配置 前端项目使用的Dockerfile文件内容 把前端项目编译后生成的dist文件夹放在nginx的html默认目录下,浏览器访问前端项目时 ...

随机推荐

  1. 从原理到场景 系统讲解 PHP 缓存技术(全)

    概述 缓存已经成了项目中是必不可少的一部分,它是提高性能最好的方式,例如减少网络I/O.减少磁盘I/O 等,使项目加载速度变的更快. 缓存可以是CPU缓存.内存缓存.硬盘缓存,不同的缓存查询速度也不一 ...

  2. 【ADO.NET基础】加密方法公共类

    各种加密方法集锦: using System; using System.Security.Cryptography; using System.Text; using System.IO; usin ...

  3. .Net Core 微服务容器系列基础目录篇

    1.开场白 HI,各位老铁,大家端午好,之前写了些关于.net core商城系列的文章,有点乱,今天心血来潮想着整理一下(今天只是先把目录列出来,后面的每篇文章这两天会进行重新修改的,目前先将就看下) ...

  4. 文本数据IO操作--字符流

    一.Reader和Writer 1. 字符流原理 Reader是所有字符输入流的父类而Writer是所有字符输出流的父类.字符流是以字符(char)为单位读写数据的.一次处理一个unicode.字符流 ...

  5. ELK 学习笔记之 elasticsearch head插件安装

    elasticsearch head插件安装: 准备工作: 安装nodejs和npm https://nodejs.org/en/download/ node-v6.11.2-linux-x64.ta ...

  6. redis缓存+session 实现单点登录

    一.单点登录介绍 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系 ...

  7. 简单自定义mybatis流程!!

    ----简单自定义mybatis流程----一.首先封装daoMapperxml文件和sqlMapconfig配置文件,如何封装:(1).封装我们的Mapper.xml文件,提取名称空间namespa ...

  8. Spring Security 入门 (二)

    我们在篇(一)中已经谈到了默认的登录页面以及默认的登录账号和密码. 在这一篇中我们将自己定义登录页面及账号密码. 我们先从简单的开始吧:设置自定义的账号和密码(并非从数据库读取),虽然意义不大. 上一 ...

  9. js 变量与常量

    编辑器:Sublime Text 3 <!DOCTYPE html><html lang="en"><head> <meta charse ...

  10. oracle 分区表(子分区)收缩笔记

    思路1.首先移动子分区到别的表空间.2.收缩数据文件.3.再把子分区移回原表空间. ---------------------------------------------生成发送报告移动子分区语句 ...