最近把博客从以前的Typecho 1.1升级上来,碰到了一些问题,捣鼓了几天,记录一下。

第一个问题是:在后台开关插件的时候,每次都会报500错误,告诉我无法启用/禁用插件,但返回上一页后又发现插件被成功地启用或禁用了。我试着把Cloudflare的CDN关掉,问题就消失了。而且虽然电脑端的Chrome会500,但手机上的Kiwi浏览器开关插件却没有问题。

排查后发现是因为Cloudflare自动开启了Speed Brain,这个功能会尝试向浏览器发送一个Speculation-Rules响应头,这个头会让浏览器提前加载资源来提速,从而导致开关插件的网页请求实际上被发送了两次,而浏览器加载页面的时候,第一次请求已经把插件启用/禁用过了,Typecho无法重复开关插件,于是报错。
根据MDN上的信息,这个请求头仍然处于实验状态,因此很多浏览器是不认识这个响应头的,这也是为什么我手机上的Kiwi浏览器没有报错。
解决办法很简单,进入CF控制台-速度-优化-内容优化,关掉Speed Brain就可以了 eveonecat.gif
10月17日更新:Cloudflare于UTC时间2024年10月16日晚22:05发布了一个有关Speed Brain影响wordpress用户的修复,经测试,该问题已经被修复,不再需要关闭Speed Brain。
我要是晚两天搞插件也碰不上这个问题了,怎么就这么巧?费我这么多时间调试 quyinniang_heng.png
关闭Speed Brain

第二个问题是:Typecho新版添加的异步回调功能无法使用。因为我原先使用的LoveKKComment邮件提醒插件在新版Typecho上会报错,本打算换其他的插件,却发现换了许多插件都无法正常发送邮件。后来发现使用非异步回调的方式可以发送邮件。
我又花了两天时间调试,终于发现1.2.1版本的getHeader方法会尝试使用$_SERVER['HTTP_CONTENT_TYPE']去读取content-type信息,但事实上很多服务器使用的是$_SERVER['CONTENT_TYPE'],这导致异步回调时Typecho无法正确地读取传递过去的json数据,从而不能验证发起异步处理请求者的身份,然后拒绝执行回调函数。
上Github看了一下Typecho的最新代码,这个问题其实已经修复了。但1.3.0正式版还没有发布,所以如果下载正式版的话就会碰到这个问题。更新到1.3.0开发版即可解决该问题,当然也可以只修改getHeader方法来修复,随便你 quyinniang_huaji.png

本文作者:小欢

本文链接:Typecho1.2.1更新后碰到的一些问题 - https://www.xh-ws.com/archives/typecho-121-problems.html

版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 小欢博客 所有,遵循知识共享署名-相同方式共享 4.0 国际许可协议。转载请注明出处!