为什么 cflocation 去除字符而不访问 URL?
Why does cflocation strip characters and not visit the URL?
我有一个 URL 存储为:
<cfset VisitURL = 'http://www.toysexample.com/search.aspx?searchBox=christmasgifts≠Sort=high&search=new' />
(上面的URL字符串实际上来自于我无法控制的数据库字段)
当我要求cflocation
访问上面的URL时,像这样:
<cflocation url="#EncodeForURL(VisitURL)#" addtoken="no" />
它访问 URL 作为我站点中的子文件夹。所以我最终去了 URL http://www.volumeoneexample.com/http:/www.toysexample.com/search.aspx?searchBox=christmasgifts≠Sort=high&search=new
如您所见,它从 http://
部分删除了一个正斜杠,并将 URL 作为文件夹附加到我的站点中。我不明白为什么要这样做?
如评论中所述,您 "over encoding"。 EncodeForURL() 应该只在 URL 参数上。
由于您无法分别检索 URL 和参数,因此您 可以 将它们当作列表来处理。
<cflocation url="#ListFirst(VisitURL,"?")#?#EncodeForURL(ListRest(VisitURL,"?"))#" />
如果事情变得有点不稳定,你需要做更多的操作。
我有一个 URL 存储为:
<cfset VisitURL = 'http://www.toysexample.com/search.aspx?searchBox=christmasgifts≠Sort=high&search=new' />
(上面的URL字符串实际上来自于我无法控制的数据库字段)
当我要求cflocation
访问上面的URL时,像这样:
<cflocation url="#EncodeForURL(VisitURL)#" addtoken="no" />
它访问 URL 作为我站点中的子文件夹。所以我最终去了 URL http://www.volumeoneexample.com/http:/www.toysexample.com/search.aspx?searchBox=christmasgifts≠Sort=high&search=new
如您所见,它从 http://
部分删除了一个正斜杠,并将 URL 作为文件夹附加到我的站点中。我不明白为什么要这样做?
如评论中所述,您 "over encoding"。 EncodeForURL() 应该只在 URL 参数上。
由于您无法分别检索 URL 和参数,因此您 可以 将它们当作列表来处理。
<cflocation url="#ListFirst(VisitURL,"?")#?#EncodeForURL(ListRest(VisitURL,"?"))#" />
如果事情变得有点不稳定,你需要做更多的操作。