修剪不在Coldfusion 8.0中工作

Abb*_*don 0 html coldfusion coldfusion-8

我试图修剪一个我的Coldfusion组件返回的字符串,但无论我做什么Coldfusion在字符串的开头添加换行,没有任何理由导致我的Javascript中出错.你知道这段代码有什么问题吗?

function back(){            
        window.location = <cfoutput>"#Trim(Session.history.getBackUrl())#"</cfoutput>;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码产生以下HTML的和平:

function back(){
      window.location = "

            http://dummy_server_address/index.cfm?TargetUrl=disp_main";
}
Run Code Online (Sandbox Code Playgroud)

在这里查看Coldfusion规范是修剪定义:删除前导和尾随空格和控制字符后的字符串参数的副本.

所以应该完成这项工作!因此我想知道如何正确地做到这一点,我不想使用替换或类似的功能.

编辑:非常令人惊讶这是有效的...但我不喜欢这个解决方案,所以如果你有任何其他想法,或至少有关于这种行为的解释.

    <cfset backUrl = Session.history.getBackUrl()>
    function back(){            
            window.location = <cfoutput>"#backUrl#"</cfoutput>;
    }
Run Code Online (Sandbox Code Playgroud)

Pet*_*ton 10

确保您的历史记录组件已禁用输出.即:

 <cfcomponent output=false >
Run Code Online (Sandbox Code Playgroud)

然后确保CFC中的getBackUrl函数(以及其他所有函数)output=false设置.

另外,不要忘记在变量上使用JsStringFormat,以确保它被适当地转义:

<cfoutput>"#JsStringFormat( Session.history.getBackUrl() )#"</cfoutput>
Run Code Online (Sandbox Code Playgroud)

否则,如果URL恰好包含JavaScript注入,或者只是JS错误,则存在潜在风险".