一、问题概述 客户内网可以对业务数据库进行DELETE、PUT、PATCH等请求,使用公网连接时,get和post请求正常,但DELETE、PUT、PATCH等请求均超时。 二、故障截图1、内网delete请求没有问题 2、外网delete请求,Operation timed out 三、故障原因分析1、测试外网get、post、delete、put等请求时,发现get、post等请求正常,而delete、put等请求超时 2、内网测试get、post、delete、put等请求均正常,合理怀疑是出口防火墙的问题 3、查看防火墙日志,发现防火墙的安全防护策略拦截了公网的delete请求 4、检查策略发现防火墙的业务防护策略引用了WEB应用防护策略,WEB应用防护策略勾选了http方法过滤,方法过滤中禁止了一些高危http方法 四、解决方案 方法一:进入对象-安全策略模板WEB应用防护策略-default-高级配置-Http异常检测-(取消)方法过滤 方法二:业务改造 前端必须改代码,这个无法绕过,所有的PUT/DELETE请求,都要求改成POST,并携带特殊Header: 所有的PUT请求,要携带Header:X-HTTP-Method-Override: PUT 所有的DELETE请求,要携带Header:X-HTTP-Method-Override: DELETE 五、注意事项根据客户需求选择是不是要采用方法过滤的策略,一定要采用方法过滤的策略则需修改前端代码,把PUT/DELETE改为POST。 |