【发布时间】:2019-03-14 09:17:33
【问题描述】:
Typo3 v9.5.5,PHP 7.2,从 8.7 升级后。缓存清除,缓存关闭,开发环境。我的扩展已 requireCHashArgumentForActionArguments 设置为 0。
我使用如下语法生成指向操作的链接:
<f:link.action action="test" noCacheHash="1"></f:link.action>
很遗憾,cHash 参数始终存在 在返回的 URL 中。它破坏了我的扩展程序的逻辑,因为我在通过 ajax 请求调用操作之前在我的 JavaScript 代码中向 URL 添加了额外的属性。
我预计 noCacheHash 参数会导致从 URL 中删除 cHash 参数。
我希望设置 requireCHashArgumentForActionArguments 可以防止任何 URL 验证问题,即使 URL 中存在 cHash。
我知道cHashExcludedParameters 配置设置,但我一般想为我的扩展程序关闭cHash。
所以,我正在寻求帮助或解释。
编辑:如果我从 URL 中手动删除 chash 参数并调用它,请求就会成功处理。因此,这意味着 requireCHashArgumentForActionArguments 处理得很好,但只有当 URL 中不存在 chash 时。
编辑 2:
在我的情况下,无效的 cHash 导致 pageNotFoundOnCHashError 处理程序被调用。我在AdditionalConfiguration.php 中设置了$GLOBALS['TYPO3_CONF_VARS']['FE']['pageNotFoundOnCHashError'] = false;,它“解决”了一个问题(不是一个优雅的解决方案)。
【问题讨论】:
-
实际上这已经在 v8 中消失了 docs.typo3.org/typo3cms/extensions/core/latest/Changelog/8.5/…
-
@MKlein,文档说它可以被禁用:可以使用功能开关 requireCHashArgumentForActionArguments 为所有操作禁用该行为。
-
我只能为您提供一种解决方案:如果您已经在 JS 中摆弄 GET 参数,只需踢出 chash 值即可。请记住:任何没有有效 cHash 参数的请求都不会被核心缓存,这可能是一个主要的性能主题!
-
我想到了这一点,但这不是一个优雅而灵活的灵魂,因为在向 JS 应用程序添加新的 ajax 请求时,我必须始终记住删除手动 chash。我知道 Typo3 中没有缓存的性能问题。感谢您的 cmets 和建议。
-
@qba-dev ,您找到解决方案了吗?
标签: typo3 typo3-extensions typo3-9.x