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 "";

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

相关推荐
weipt17 分钟前
利用wsl给windows电脑上安装一个ubuntu
linux·运维·ubuntu
jarreyer25 分钟前
【软件操作】加快资源管理器打开速度
运维
楚疏笃42 分钟前
linux下给OpenCloudOS根目录扩容
linux·运维·服务器
dog2501 小时前
网络的时延抖动
linux·运维·网络
程序员-Benothing1 小时前
Linux 软件包管理:yum / apt / dnf 命令使用全解析
linux·运维·服务器
DevangLic1 小时前
opencode go要完蛋了吗
运维·学习
SEO_juper1 小时前
你的服务器正在被 AI 爬虫“白嫖“带宽:2026 用日志把 Googlebot 和 AI 洪流分开算账(附脚本)
运维·人工智能·爬虫·python·chatgpt·seo
志栋智能2 小时前
超自动化巡检报告:从数据表格到智能洞察
运维·自动化
芯飞云2 小时前
芯飞云服务器日常使用体验:从配置选型到实际负载的技术分析
运维·服务器
Splashtop高性能远程控制软件2 小时前
AI 辅助端点运维先接手补丁分级、合规可视和同台处置
运维·网络·人工智能·自动化·远程工作·splashtop