哪个是正确的?

<img src="#encodeForHTMLAttribute(FORM.path)#">


要么

<img src="#encodeForURL(FORM.path)#">


要么

<img src="#encodeForHTMLAttribute(encodeForURL(FORM.path))#">


最佳答案

使用与您要插入需要编码的文本的上下文相匹配的方法。


encodeForUrl用于将动态文本放入URL中-因此它将用/and so on)替换%2F,并且如果将其应用于整个URL,则将具有编码URL(因此,该URL被破坏了使用)在src属性中)。

如果允许用户提供部分URL,则需要分割/(和任何其他相关的定界符),在每个部分上应用encodeForUrl,然后再次结合在一起。

注意:encodeForUrl似乎直接将其字符串传递给Java,这意味着反斜杠被视为转义字符-\b\n编码为%08%0A而不是%5Cb%5Cn-此行为不是标准URL编码的一部分(一般也不是CF字符串) )。为避免这种情况,请改用函数UrlEncodedFormat。

encodeForHTMLAttribute用于将动态文本放入HTML属性中-目的是确保将内容视为文本(不解析为HTML)-它不知道/不在乎其内容是URL还是其他内容。


总之,对于这种情况,您可能需要encodeForHtmlAttribute( UrlEncodedFormat( Form.Path ) )

09-20 17:38