前两天吃午饭时,同事提到一个项目本地调试很不友好,遇到 keycloak 在本地无法完成登录
这实际牵扯到两个问题
- 前端无需强依赖本地环境的,通过 charles 代理等,可以完全支持直接调试先上环境
- 通过代理,将先上前端站点代理为本地环境
- keycloak 为什么不支持本地开发登录
- keycloak 回调地址时写死的,不会回跳 localhost 本地开发域
- 可通过代理配置,修改回跳地址
- 回跳后,cookie 设置的不对
- keycloak 回调地址时写死的,不会回跳 localhost 本地开发域
我们这儿是针对的第一个问题,本文对配置解决过程,简单做个记录
使用代理(如 charles)抓包,调试代码等,这是一个前端必备技能,能极大提高前端研发效率
如果前端项目路由及资源都在一个目录下,简单配置一个 map remote 即可实现代理请求到本地网络了
项目结构
前端项目结构以及 API 接口结构如下:
/ 前端项目 使用 hash 路由
/xxx.js 前端 js
/xxx.css 前端 css
/oauth/xxx 后端接口
/api/xxx 后端接口
此时仅仅使用 map remote 无法实现诉求了(map remote 不支持复杂的正则匹配)
我们这里进行如下配置
- 配置 map remote 代理域名到本地根目录
- m.dev.xxx.com -> localhost:8000
- 配置 rewrite 规则,将 js、css 等前端资源代理到本地
- 配置如下 location 配置适配哪个域,下方配置具体规则,此处选择 URL,配置如截图
不要忘记打开本地代理
如上配置,即可通过 dev 域名访问本地开发代码
- 接口与登录权限等,都使用 dev 环境的
- 前端代码使用本地的