ColdFusion cfhttp从参数中删除换行符

时间:2012-05-17 18:57:31

标签: coldfusion

在调用下面的函数之前,text1值已编码,即:

http://example/exampleProxy.cfc?returnFormat=plain&method=update&id=443&blah=something&text1=bob+bob2%0Abob

但是发送的请求已经删除了换行符,即

http://example/test/id=443&blah=something&text1=bob+bob2bob

功能:

<cffunction name="update" access="remote" output="yes" returntype="string">
        <cfargument name="id" required="yes" type="string" />
        <cfargument name="blah" required="yes" type="string" />
        <cfargument name="text1" required="yes" type="string" />   

        <cfhttp url="#variables.cString#" method="PUT"      timeout="#variables.HTTP_TIMEOUT#">
            <cfhttpparam name="id" type="url" value="#arguments.id#">
            <cfhttpparam name="blah" type="url" value="#arguments.blah#">
            <cfhttpparam name="text1" type="url" value="#arguments.text1#">
        </cfhttp>
        ...

2 个答案:

答案 0 :(得分:2)

根据你的描述,我怀疑新的线条字符在那里。但是您无法通过简单的<cfdump var="...">看到它,因为它会显示结果html。因此,任何新行字符都只显示为单个空格:

TEXT1: bob bob2 bob  

您需要使用format="text"<pre>标记。然后你应该在值中看到新的行字符:

<强>代码:

<cfdump var="#arguments#" format="text">
<pre>TEXT1: #arguments.text1#</pre>

<强>结果:

BLAH: something
ID: 443
TEXT1: bob bob2   <--- new line
bob


TEXT1: bob bob2  <--- new line
bob

我用CF9测试了你的代码,新的代码存在于函数内部和接收页面上。即CGI.QUERY_STRING

  id=443&blah=something&text1=bob%20bob2%0Abob 

答案 1 :(得分:1)

确认是否有任何内容被剥离的另一种方法是运行Fiddler并在您的呼叫中添加proxyserver =“localhost”proxyport =“8888”。呼叫将通过提琴手进行路由,您可以从那里检查所有参数