解决访问 https 网站时,后端重定向或获取 URL 变成 http 的问题
在常见的Nginx反向代理后端Java应用的部署架构中,客户端与Nginx之间为HTTPS,但Nginx转发至后端服务器的请求协议为HTTP。这会导致后端应用通过`HttpServletRequest.getRequestURL()`获取到的URL为内网HTTP地址,且`HttpServletResponse.sendRedirect()`生成的重定向地址也为HTTP,无法反映真实的客户端访问协议。 解决此问题需结合Nginx配置与后端代码调整。对于URL获取问题,需在Nginx中通过`proxy_set_header Host $host`和`proxy_set_header X-Forwarded-Proto $scheme`向后端传递原始主机名与协议信息。后端Java应用则需通过自定义Servlet过滤器,读取`X-Forwarded-Proto`头并重写请求的`getScheme()`与`getRequestURL()`方法,确保返回正确的HTTPS URL。对于重定向问题,可通过Nginx的`proxy_redirect http:// $scheme://`指令,将后端响应中的Location头协议自动修正。 当架构中Nginx前存在负载均衡器时,需由负载均衡器透传`X-Forwarded-Proto`头,同时将Nginx配置中相关的`$scheme`变量替换为`$http_x_forwarded_proto`,以正确识别和传递最前端的访问协议。
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
本文详细记录了在Mac系统上搭建ESP-IDF开发环境并编译运行小智AI固件的完整流程。作者通过四个核心步骤完成环境配置:首先使用Homebrew安装cmake等前置依赖;随后克隆指定版本(v5.4.1)的ESP-IDF仓库;接着运行install脚本安装ESP32-S3的工具链;最后通过修改shell配置文件设置快捷环境变量。在环境就绪后,文章展示了如何获取小智AI固件源码,通过一系列命令完成固件的编译、烧录和监控。整个过程为需要定制化开发ESP32-S3智能设备的开发者提供了清晰的实践参考,并推荐使用VSCode的ESP-IDF扩展进行后续的开发与调试。
Java|FreeMarker 复用 layout
在 FreeMarker 项目中,页面布局的重复代码会随着页面增多而扩散,导致维护困难。常规的 include 指令可以提取公共头部和底部等元素,但每个页面仍需手动组合完整结构,一旦布局变更,修改成本较高。为消除这种重复,可以通过抽象布局模板来优化:利用 FreeMarker 的 macro 功能,定义一个统一的页面布局文件,其中包含固定组件并接收页面内容和脚本作为参数。具体页面只需导入该模板,并通过变量分配填充内容,从而实现布局与内容的分离。进一步,借助编辑器的代码片段功能,如 VSCode 的 code
Mac mini 通过键盘连接蓝牙鼠标
当Mac mini与蓝牙鼠标意外断连时,通过键盘重新连接是一种高效且独立的解决方案,避免了依赖有线鼠标的不便。核心操作涉及利用系统设置进行蓝牙配对:首先通过Cmd+空格调出Spotlight搜索框,输入“系统设置”并回车进入;随后使用方向键导航至蓝牙选项,并手动使鼠标进入配对模式。关键步骤在于解决键盘焦点无法移动到设置面板右侧的问题,这需要按下Ctrl+F7快捷键开启键盘导航功能,从而允许Tab键正常切换焦点。定位到蓝牙鼠标的“连接”按钮后,按Space键即可完成配对。此外,其他备选方法包括通过Cmd+Option+F