Typecho升级到1.2.0后所有文章不能回复

讨论程序使用中的问题
回复
RucLinux
帖子: 6
注册时间: 2022年 4月 22日 08:40

Typecho升级到1.2.0后所有文章不能回复

帖子 RucLinux »

问题所出网站:https://www.python.hn.cn/

问题描述: 因为某个视频网站的视频链接解析,需要设置

代码: 全选

<meta name="referrer" content="no-referrer">
,所以博客上所有文章均不能正常回复了。

1、点击提交按钮,没有任何反应,前台和后台均看不到该回复,在审核中也看不到该回复。

2、尝试过取消 “检查评论来源页 URL 是否与文章链接一致”和“开启反垃圾保护”两项选项,有效果。但我将失去反垃圾的保护

3、将

代码: 全选

<meta name="referrer" content="no-referrer">
删除后可以解决问题。但是我却需要这一条。

请教大家,如何可以在不影响目前视频解析的情况下,修复或者解决这个问题呢?谢谢大家了。



图片

图片
图片
RucLinux
帖子: 6
注册时间: 2022年 4月 22日 08:40

Re: Typecho升级到1.2.0后所有文章不能回复

帖子 RucLinux »

今天处理了一天了,仍没有解决问题,看了typecho里的很多源码,发现问题可能出现在getreferer()这个函数,但我删除或者替换了这个函数后,却发现无法登录、无法回复了。

通过F12工具看到,Typecho会检测referer,哪果没有,就会不能登陆和回复。所以现在问题也不知道该如何解决了。
Showfom
帖子: 6
注册时间: 2008年 10月 11日 14:55

Re: Typecho升级到1.2.0后所有文章不能回复

帖子 Showfom »

参考 MDN 的解释

https://developer.mozilla.org/zh-CN/doc ... rer-Policy

你换成

代码: 全选

<meta name="referrer" content="same-origin">
就可以了
RucLinux
帖子: 6
注册时间: 2022年 4月 22日 08:40

Re: Typecho升级到1.2.0后所有文章不能回复

帖子 RucLinux »

谢谢您的回复,您的方法可以解决这个问题,但我也想了解源码中如何学习。

1、我试了修改/var/Widget/Security.php 中下面的这一段,将getRefer()替换成了getRequestUrl(),没有效果。

代码: 全选

/**
 * 保护提交数据
 */
public function protect()
{
    if ($this->enabled && $this->request->get('_') != $this->getToken($this->request->getReferer())) {
        $this->response->goBack();
    }
}
2、我尝试修改了/var/Widget/FeedBack.php文件中下面这段,但是也没有效果。

代码: 全选

/*
     * 这是新增的代码,替代 getReferer() 函数 
     */
    public function typechon_get_referer()
    {
        if (strpos($_SERVER["HTTP_HOST"], "www.python.hn.cn") !== false || strpos($_SERVER["HTTP_HOST"], "mangshe.python.hn.cn") !== false) {
            $tycode = $_SERVER["HTTP_HOST"];
        }
        return $tycode;
    }
然后将这个自定义函数类型cho_get_referer的返回值替换掉下面代码的$referer,由getReferer()获取的参数。

代码: 全选

/** 检查来源 */
                if ($this->options->commentsCheckReferer && 'false' != $this->parameter->checkReferer) {
                    #$referer = $this->request->getReferer(); //这里改成
                    $referer = typechon_get_referer();
修改过后,我发现不能登陆后台了。
回复