【发布时间】:2015-03-24 13:05:41
【问题描述】:
我注意到 Sitecore 和查询字符串中的括号有些奇怪。出于某种原因,Sitecore 似乎对查询字符串做了一些奇怪的事情。以下是重现此行为的步骤:
- 安装 Sitecore 7.5
- 创建一个名为 TestSublayout 的简单子布局
- 在 TestSublayout 上添加一个名为 litTest 的 ASP Literal 标签
- 在子布局后面的代码中,在页面加载事件中添加以下代码:
litTest.Text = Request.QueryString.ToString(); - 在 Sitecore 中创建一个名为 TestItem 的简单项目并使用示例项目数据模板
- 在 TestItem 的演示详细信息中,将 TestSublayout 放在主占位符中。
- 构建 Visual Studio 项目并发布网站。
- 打开浏览器并转到http://example.com/testitem.aspx?selecteditem=surf(x)%203D%20Laminates
出于某种原因,Sitecore 对括号做了一些处理,这就是您在屏幕上看到的内容:
selecteditem=surf&%2340%3bx&%2341%3b+3D+层压板
我认为 Sitecore 正在做某事的原因是,我在非 Sitecore 项目上尝试了这些完全相同的步骤,并且效果很好。括号没有乱码或翻译成任何东西。正如我所期望的那样,它们就在字符串中:
selecteditem=surf(x)%203D%20Laminates
有什么想法吗?
【问题讨论】:
-
您能否尝试将该 URL 放入 Sitecore 忽略的 URL 中并重新运行请求以查看管道中是否存在干扰?
-
好吧,如果我这样做了,我会收到 404 错误。没有名为 testitem.aspx 的物理 ASPX 页面。
-
是的,你是对的,抱歉。发生了一些非常奇怪的事情,URL 解码该值会导致
selecteditem=surf(x) 3D Laminates如果您从查询字符串中删除括号会发生什么? -
这和XSS防护无关吧?
-
也可以在这里提出最初的问题stackoverflow.com/questions/29220108/…
标签: asp.net sitecore query-string sitecore7 sitecore7.5