表单点提交直接返回 405,换个浏览器依旧。乍看像缓存或者权限的锅,追下去往往不是。

location /submit { limit_except POST { deny all; } }
# 表单
<form method='post'>

追下去是这么回事:提交地址只允许特定方法,表单或请求使用的方法与之不匹配。

「405 方法不允许」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。

同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

具体做法是,核对表单方法与路由声明;静态页面不要用不支持的动词;确认重写规则不改变方法。

验收就看一点,提交请求返回 200,处理逻辑正常执行。

作者 9823189