如何在Javascript和ColdFusion之间编码/解码?

时间:2015-05-17 16:05:38

标签: javascript coldfusion

我有一个ColdFusion表单并通过使用下面的Javascript从另一个表单复制它来设置字段值。 (这实际上来自弹出输入窗口,您可以在其中粘贴大文本)。

form1.remark.value = form2.remark.value;

发生这种情况后,将提交form1以供另一个process.cfm页面进一步处理。

问题是remark.value包含复杂文本,包括XML,但是当它到达process.cfm页面时会被编码。我正在寻找一种在Javascript部分正确编码的方法,然后使用ColdFusion代码在process.cfm对其进行解码,以便我返回原始文本,包括XML标记。

这是如何最好地完成的?

2 个答案:

答案 0 :(得分:1)

我认为你可以像这样使用StringEscapeUtils类java:

<cfset objEscapeUtil = createObject("java", "org.apache.commons.lang.StringEscapeUtils")>
<cfset unescapedString = objEscapeUtil.unescapeJavaScript(escapedString)>

答案 1 :(得分:1)

如果您尝试在下一页上使用提交的表单字段的值作为JavaScript变量的值,那么您需要使用内置的(从ColdFusion 10开始)函数encodeForJavaScript。

<cfoutput>var myJSvar = '#encodeForJavaScript(form.myField)#';</cfoutput>

这将正确地转义form.myField的字符串值,以便它可以与JavaScript一起使用。

如果您使用的是CF 8或9,则会将OWASP JAR文件加载到CF中(如果您已正确修补),并且可以通过实例化正确的Java类来直接访问相同的函数。

<cfset application.xssEncoder = createObject("java", "org.owasp.esapi.esapi").encoder() />

<cfoutput>
var myJSvar = '#application.xssEncoder.encodeForJavaScript(form.myField)#';
</cfoutput>