Tengine替换Nginx作为代理服务遇到的问题

在h5的app进行网络请求struts2 (版本6.1.1)框架对外的服务

在struts2 框架的底层使用了是否是同源校验(使用了拦截器FetchMetadataInterceptor

拦截器中判断了是否是同源请求(get请求会直接放过),出现问题的是POST请求。


由上图可以看到,struts2 会从请求头中获取"Sec-Fetch-Site" 的值进行判断,使用Tengine代理struts2 框架后问题就出在这里。

使用Tengine代理服务后(此处是https的代理,http没有验证),由于安全性要求,Tengine会给请求头拼接上几个参数(Nginx 不会主动去拼接)

复制代码
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: cross-site

在struts2 的拦截器中取出sec-fetch-sit, 发现是cross-site, 且不是get请求,会直接返回403

解决方式

临时修复方法是在Tengine 的配置文件(在server 或者location 的配置属性中覆盖配置)中添加如下配置进行覆盖,把请求头中的这三个参数置空

复制代码
proxy_set_header Sec-Fetch-Dest "";
proxy_set_header Sec-Fetch-Mode "";
proxy_set_header Sec-Fetch-Site "";

到此请求能够正常访问到接口,而不被拦截器给过滤

相关推荐
sduwcgg6 小时前
IQ-Learn 在 RTX 3090 服务器上的环境配置与踩坑记录
运维·服务器
marsh02067 小时前
43 openclaw熔断与降级:保障系统在异常情况下的可用性
java·运维·网络·ai·编程·技术
摇滚侠7 小时前
Docker 如何查询挂载的目录
运维·docker·容器
勇闯逆流河8 小时前
【Linux】linux进程控制(进程池的详解与实现)
linux·运维·服务器
WJ.Polar9 小时前
Scapy基本应用
linux·运维·网络·python
数智顾问10 小时前
(123页PPT)华为流程管理体系精髓提炼(附下载方式)
运维·华为
AC赳赳老秦13 小时前
财务报销自动化:用 OpenClaw 自动识别发票信息、填写报销单、校验报销规则,减少手工操作
运维·网络·eclipse·github·visual studio·deepseek·openclaw
倔强的石头10614 小时前
【Linux 指南】文件系统系列(一):磁盘底层原理 —— 从物理结构到 CHS与LBA 寻址全解析
linux·运维·服务器
陶然同学15 小时前
【Linux及Shell】VMware&Ubuntu&Xshell安装
linux·运维·xshell8·xftp8
小乐笙15 小时前
笔记:纯真 IP 库使用
运维·网络·tcp/ip