将整个CFM页面包装在cfoutput标记中是否安全

vol*_*one 5 coldfusion

我在<cfoutput>整个<html>标签周围放置了一个标签.ColdBox最佳实践指南指出"当您创建视图模板时,请尝试始终使用1 cfoutput标记将其包围,而不是将它们嵌套在整个地方."

但我偶尔会看到错误弹出,其中<script>包含javascript代码的块在<cfoutput>标记内.这可能是因为Coldfusion看到一个哈希#并尝试解析它,但它不能因为它的javascript.

那么如何<cfoutput>在视图页面上放置一个标记来放置所有内容呢?

小智 2

在我的视图文件中,我倾向于将所有输出包装在一个cfoutput标签中。

您可以#通过将 JavaScript 等中的符号转换为##.

  • 如果您使用“&lt;script&gt;”标签加载外部脚本,则链接文件不会被 CF 解析 - 它由浏览器加载。但如果你在 `&lt;script&gt;` 块中有原始 JS 代码,那么其中的任何 `#` 都会导致问题 - 正如 Simon 指出的那样,只需转义它们即可。或者,只需将结束的“cfoutput”标签移到这些“&lt;script&gt;”块上方。 (3认同)
  • 但是,如果您在“&lt;head&gt;”区域中导入大量 JavaScript 库,那么转义所有哈希值是不切实际的,对吗? (2认同)
  • 如果“导入”是指使用“&lt;script&gt;”标签,则无需担心在这些库中转义“#”——它们将在 ColdFusion 完成处理后由浏览器加载。如果“导入”是指使用“cfinclude”将 JS 实际放入页面中(而不是使用“&lt;script&gt;”),那么这是一个坏主意……不要这样做。 (2认同)