最近有一个用户在购买了天兴工作室开发的“zblog纯博客主题 vue3+小程序双版本”主题后,联系到我反应安装好主题之后前台无法发布文章。
在客户网站后台调试排查发现问题为:网站api对get请求返回一切正常,post请求则统一返回419并提示“ZbpErrorException: 非法访问”,如下图所示:
接着开始解决,先以为是用户网站没有设置ssl导致的。让用户设置好ssl之后再测试发现问题依旧存在。
只好接着排查,按文档说明419这个错误属于post请求但是没有权限导致的,然而当前页面明明已经登录成功并且获取到了token。在浏览器开发者工具里面查看post请求数据,每次请求都按照zblog官方文档带上了Authorization头并赋值为“Bearer + token”,几次对比均没有发现请求有啥问题,只是一味的返回419错误。
这个bug没理由啊~
最后在自己本地和演示站安装跟用户网站一样的版本主题测试均没有发生这个问题。基本可以排除是主题代码问题。只能是用户服务器主机那边的设置问题了。
遇到这种情况于是按照现在最流行的解决方案去问了问deepseek,一路描述问题和补充具体情况,最后deepseek也没能告诉个所以然。
事情到了这个居然卡住了...
冷静一下。回头去翻下zblog的api官方文档,让我看到了这个:
赶紧去用户网站后台看了下主机环境,果然是Apache的。去.htaccess文件里面添加了对应代码后再测试一切正常!
如果你也是在使用zblog的api时发送post请求明明鉴权请求一切正常,但是死活返回419非法访问的话,去看看自己的网站环境是不是Apache的,如果是那么大概率就是这个问题造成的。只需要在网站根目录下找到.htaccess文件(如果没有这个文件新建一个也行)。然后加上下面一行代码:
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]
问题即可解决。
最后继续拓展下,问问deepseek”Apache为什么会获取不到 Authorization 头信息“,deepseek回答如下:
你就说deepseek牛逼不牛逼吧!!!