TYPO3 Fluid表单__referrer[arguments]参数过长致请求失败
TYPO3 Fluid表单__referrer[arguments]过长导致400错误的解决办法
改用POST请求提交表单
GET请求的URI长度受服务器限制,把表单提交方式改成POST就能从根源上避免这个问题。在Fluid的FormViewHelper里直接设置method属性即可:<f:form method="POST" action="yourAction" controller="YourController"> <!-- 表单内容 --> </f:form>对应的JavaScript提交逻辑也要同步改成POST方式,参数会被放在请求体中,不再占用URI长度。
截断或清理__referrer参数
可以通过配置或自定义代码限制__referrer[arguments]的长度:- TypoScript配置:关闭Extbase会话存储中不必要的referrer参数
config.tx_extbase.persistence.session.enable = 0 - 前端处理:在JavaScript提交表单前,手动截取__referrer[arguments]的内容,只保留必要部分,甚至直接删除非必需的参数片段。
- TypoScript配置:关闭Extbase会话存储中不必要的referrer参数
调整服务器端URI长度限制(不推荐)
如果必须使用GET请求,可以修改服务器配置放宽URI长度限制:- Apache:调整
httpd.conf里的LimitRequestLine和LimitRequestFieldSize参数,增大数值 - Nginx:修改
nginx.conf中的large_client_header_buffers配置
但这种方法会影响整个服务器的请求处理策略,且GET本身不适合传输大量数据,仅作为临时应急方案。
- Apache:调整
配置TYPO3的Referrer清理规则
在系统配置中开启referrer自动清理,减少不必要的参数存储:
在ext_localconf.php中添加:$GLOBALS['TYPO3_CONF_VARS']['FE']['referrerCleanUp'] = true;也可以通过调整
$GLOBALS['TYPO3_CONF_VARS']['FE']['referrerCheck']相关参数,限制referrer中存储的arguments数量。
内容的提问来源于stack exchange,提问作者Beacze
相关产品推荐
相关产品推荐

