Yii2 控制器触发两次/取决于浏览器

Yii2 Controller Firing Twice / Depending on browser

controller/action 在 some/most 浏览器中触发了两次。

Yii2

Firefox 91.0(64 位)

第一次测试,保持开发控制台关闭。

站点控制器

public function actionTest()
{
    $path = \Yii::getAlias('@console') . '/runtime/';
    $n = 'A__' . self::random_uppercase(2);
    file_put_contents($path . $n . '.txt', time());

    return $this->render('test'); // Blank page is fine
}


private function random_uppercase($n = 1)
{
    $out = '';
    for ($i = 0; $i < $n; $i++) {
        $out .= chr(rand(65, 90));
    }

    return $out;
}

运行 Firefox 中的页面

console/runtime

> A__KW.txt

(删除文件)

打开开发者控制台并刷新页面

console/runtime

> A__XY.txt
> A__JU.txt

动作触发两次。


Chrome -- 版本 92.0.4515.159(正式版)(64 位)

无论开发控制台是否打开,它都会发生。

动作触发两次。


歌剧 -- Version:78.0.4093.147

无论开发控制台是否打开,它都会发生。

动作触发两次。


任何人都可以重现结果吗?

我在我的几个网站上试过了,结果对我来说是一样的。

有没有人找到限制只能调用一次的方法?

它弄乱了我的 $_SESSION 值

感谢帮助,谢谢。

希望这对其他人有所帮助。

它很微妙,所以如果您不寻找它可能会被忽视。 (至少在我的网站上)

第一个调用来自 page/action (/?r=site/test) 这路由正确。

第二个来自该控制器中的 actionIndex。

我的解决方法是不使用 actionIndex,然后不会发生进一步的操作。

.

我在 actionIndex 中有测试代码片段,所以直到我更改文件名后才注意到它。然后可以看到是page route,然后是index.

如果这还不够清楚,post你的问题,我会尽力回答。