Sitecore站点随机自动刷新出现未知URL参数?mn,如何排查解决?
问题原因分析
- Sitecore自带设备检测模块异常:你站点出现的
mn参数结构完全匹配Sitecore官方Device Detection模块生成的设备特征哈希格式,该模块用于识别访问用户的设备类型,旧版本存在配置缺陷时,会在未完成设备识别的场景下自动触发页面刷新,向URL追加mn参数存储识别结果,且会出现重复识别反复刷新的问题,该逻辑属于服务端原生逻辑,因此隐身模式也会复现。 - 自定义重定向逻辑错误:IIS URL Rewrite规则、Sitecore自定义请求管道处理器、自定义业务代码中存在逻辑漏洞,未判断
mn参数是否已经存在,每次请求都触发重定向追加参数,导致页面反复刷新。 - 会话配置异常:站点如果开启了无Cookie会话模式,会自动向URL追加会话跟踪参数,配置错误时也会生成类似
mn的自定义跟踪参数并触发刷新。
解决思路
- 优先验证设备检测模块问题:登录Sitecore后台,定位到
系统 > 设置 > 设备检测路径,临时关闭设备检测功能,或者直接修改站点web.config配置,将<setting name="DeviceDetection.Enabled" value="true"/>改为false后重启站点测试,如果刷新问题消失即可确认根因,后续可以将Device Detection模块升级到对应Sitecore版本的最新稳定补丁,或者修改模块配置,关闭「识别完成后自动重定向追加参数」的选项,仅在后台逻辑中调用设备识别接口,不触发前端刷新。 - 排查全链路重定向逻辑:先检查IIS站点的URL Rewrite规则列表,排查所有包含参数追加的规则,其次排查Sitecore
<httpRequestBegin>管道下的自定义处理器,在处理器中加入请求日志输出,定位到注入mn参数的逻辑节点后修复,增加mn参数存在性判断,参数已存在时不再触发重定向。 - 全局搜索代码定位逻辑:全站检索前后端代码中包含
mn字符串的代码段,排查是否存在前端location.reload()、服务端301/302重定向主动追加该参数的逻辑,修复重复执行的漏洞。 - 检查会话配置:打开web.config找到
<sessionState>节点,确认cookieless属性值是否为UseCookies,如果配置为UseUri、AutoDetect等无Cookie模式,修改为UseCookies后测试是否解决问题。
内容的提问来源于stack exchange,提问作者reevez
相关产品推荐
相关产品推荐

