gpt4 book ai didi

grails - 如何从 grails 默认 gsp 编码中排除插件?

转载 作者:行者123 更新时间:2023-12-02 14:07:22 34 4
gpt4 key购买 nike

我正在一个 grails 应用程序中工作,该应用程序对所有 gsp 页面使用 html 的默认编码:

grails {
views {
gsp {
encoding = 'UTF-8'
codecs {
expression = 'html'
scriptlet = 'html'
taglib = 'none'
staticparts = 'none'
}
}
}
}

这很好,并且从绝大多数应用程序中消除了 XSS 漏洞,但是应用程序中的一些插件在 grails 变量中包含 HTML,这些变量在插件中的 GSP 上呈现。在不修改插件的情况下,我无法在我不想编码的变量周围添加 raw() 方法。

我查看了 grails 文档,可能只是在错误的地方寻找,但我找不到答案......

有没有办法从 gsp 编解码器中排除插件?甚至是特定的 Controller / View ?

最佳答案

所以我终于有时间重新审视这个并做更多的研究。最终偶然发现了 github 上的一个讨论(https://github.com/grails/grails-core/wiki/Default-Codecs)。

关于 Per Plugin 编码的部分内容如下:

"
Grails 还具有控制基于每个插件使用的编解码器的能力。例如,如果您安装了一个名为 foo 的插件,那么将以下配置放在应用程序的 Config.groovy 将仅禁用 foo 插件的编码

foo.grails.views.gsp.codecs.expression = "none"

"

在极少数情况下的旁注:

我遇到了配置文件中保留字的其他问题。我们使用了一个名为‘custom-user-interface’的插件,并试图以同样的方式引用它”
custom-user-interface.grails.views.gsp.codecs.expression = "none"

编译失败,因为 grails 试图将“接口(interface)”视为有意义的东西。试图把它放在一个字符串中
'custom-user-interface'.grails.views.gsp.codecs.expression = "none"

也无法编译并出现错误“字符串没有属性'grails'”

最终我能够逃脱它并使用括号符号成功地强制插件按照我想要的方式运行:
custom-'user-interface' {
grails.views.gsp.codecs.expression = 'none'
}

关于grails - 如何从 grails 默认 gsp 编码中排除插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24785413/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com