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错误,则存在潜在风险".