HTL/AEM 6中的内容发生了明显变化

HTL/AEM 6中的内容发生了明显变化,aem,sightly,aem-6,Aem,Sightly,Aem 6,这是我很久以来遇到的最奇怪的问题。我有一个在多字段中编写的URL。URL有一个下划线,例如,它当前位于${item.link} 当我执行${item.link}并检查时,它呈现为 <a href="http://example.net/__pinkPanther_is_pink">Click</a> <br> http://example.net/_pinkPanther_is_pink http://example.net/_pinkPant

这是我很久以来遇到的最奇怪的问题。我有一个在多字段中编写的URL。URL有一个下划线,例如,它当前位于${item.link}

当我执行

${item.link}
并检查时,它呈现为

    <a href="http://example.net/__pinkPanther_is_pink">Click</a>

 <br> http://example.net/_pinkPanther_is_pink


http://example.net/_pinkPanther_is_pink
如果您注意到这两个值都来自同一个变量,那么当链接在锚定标记的href中使用时,example.net后面会添加双下划线/


有人知道到底发生了什么吗?

这是由显示上下文感知XSS保护引起的。Sightly/HTL自动检测HTL表达式的显示上下文,使用它在HTML页面结构中的位置来检测它

例如,如果表达式出现在渲染后将生成文本的位置,则表示它位于
text
上下文中。如果在属性值中找到,则称其在
属性
上下文中,依此类推。有关页面中上下文的更多信息

在您的示例中,
href
属性中的隐式上下文是
uri
,而在后一种情况下是
text

为了覆盖此行为,可以显式设置上下文,如
href=“${item.link@context='text'}