Coldfusion 为什么cflocation会删除字符而不访问URL?

Coldfusion 为什么cflocation会删除字符而不访问URL?,coldfusion,coldfusion-2016,Coldfusion,Coldfusion 2016,我的URL存储为: <cfset VisitURL = 'http://www.toysexample.com/search.aspx?searchBox=christmasgifts≠Sort=high&search=new' /> 它作为我的站点中的子文件夹访问URL。因此,我最终转到URLhttp://www.volumeoneexample.com/http:/www.toysexample.com/search.aspx?searchBox=christmasgi

我的URL存储为:

<cfset VisitURL = 'http://www.toysexample.com/search.aspx?searchBox=christmasgifts≠Sort=high&search=new' />
它作为我的站点中的子文件夹访问URL。因此,我最终转到URL
http://www.volumeoneexample.com/http:/www.toysexample.com/search.aspx?searchBox=christmasgifts≠排序=高&搜索=新


正如您所见,它从
http://
部分中删除了一个正斜杠,并将URL作为文件夹附加到我的站点中。我不明白它为什么要这样做?

如评论中所述,您“编码过度”。EncodeForURL()应仅位于URL参数上

由于无法单独检索URL和参数,因此可以将它们当作列表来处理

<cflocation url="#ListFirst(VisitURL,"?")#?#EncodeForURL(ListRest(VisitURL,"?"))#" />


如果事情变得有点不稳定,你需要做更多的操作。

如评论中所述,你是“过度编码”。EncodeForURL()应仅位于URL参数上

由于无法单独检索URL和参数,因此可以将它们当作列表来处理

<cflocation url="#ListFirst(VisitURL,"?")#?#EncodeForURL(ListRest(VisitURL,"?"))#" />


如果事情变得有点不稳定,你需要做更多的操作。

为什么要使用EncodeForUrl()?。另外,url查询字符串中christmasgifts和Sort之间的特殊字符是什么。。圣诞礼物≠分类你能试着删除EncodeURL和那个特殊字符然后再试一次吗?@Sanjeev那个特殊字符必须存在。它不是我网站上的URL,而是第三方。没有它,URL就无法访问。我可以在URL中保留特殊字符的唯一方法是使用
EncodeForURL
,否则它会被剥离。不要对整个URL进行编码,只对参数值进行编码。请使用URLEncodedFormat()而不是EncodeForURL()。您必须在第一个
上拆分每个URL,然后在开头或后面的第一个
=
上拆分剩余的
&
,然后对每个值进行编码。然后,您必须将所有内容重新组合在一起。为什么要使用EncodeForUrl()?。另外,url查询字符串中christmasgifts和Sort之间的特殊字符是什么。。圣诞礼物≠分类你能试着删除EncodeURL和那个特殊字符然后再试一次吗?@Sanjeev那个特殊字符必须存在。它不是我网站上的URL,而是第三方。没有它,URL就无法访问。我可以在URL中保留特殊字符的唯一方法是使用
EncodeForURL
,否则它会被剥离。不要对整个URL进行编码,只对参数值进行编码。请使用URLEncodedFormat()而不是EncodeForURL()。您必须在第一个
上拆分每个URL,然后在开头或后面的第一个
=
上拆分剩余的
&
,然后对每个值进行编码。如果我只是这样做,那么为什么ColdFusion访问URL却去掉了
字符?为什么它不能访问给定的字符串呢?可能是因为这不是URL的有效字符,因此需要进行编码。我刚刚尝试了
,它似乎工作得很好,但我宁愿不必执行任何操作,也不必强制
cflocation
去指定的字符串,而不是做它自己的事情并去掉字符!如果我只是这样做
,那么为什么ColdFusion会访问URL,但会删除
字符?为什么它不能访问给定的字符串呢?可能是因为这不是URL的有效字符,因此需要进行编码。我刚刚尝试了
,它似乎工作得很好,但我宁愿不必执行任何操作,也不必强制
cflocation
去指定的字符串,而不是做它自己的事情并去掉字符!