Coldfusion cflocation奇怪的行为

时间:2017-03-14 12:47:32

标签: coldfusion cflocation

我将Google评论网址存储在我的数据库中:

https://www.google.com/search?CFID=ac59cfdf-bbad-4017-9759-e88054f3f242&CFTOKEN=0&q=njcomputerrepair%2Bbrick%2Bnj&oq=njcomp&aqs=chrome.1.69i60j69i59j69i60j69i57j0l2.2762j0j9&sourceid=chrome&ie=UTF-8#lrd=0x89c18348735c2907:0x59aa614832a36b22,3,

然后在我的应用程序中,我将该URL设置为变量,并使用cflocation将用户重定向到该URL。

<cfquery name="geturl" datasource="#datasource#">
select (residential_ReviewURL) as redirectURL
from subscribers
</cfquery>

<!--- Redirect to main html redirect page --->
<cfoutput>
<cflocation url="#getURL.redirectURL#">
</cfoutput>

然而,URL在某些时候会发生变化,因为我认为Coldfusion不喜欢URL中的字符,而是将它们替换为%或删除它们。因此,当用户点击谷歌页面时,页面不会按预期进行处理。

以下是重定向后网址的显示方式:

https://www.google.com/search?CFID=ac59cfdf-bbad-4017-9759-e88054f3f242&CFTOKEN=0&CFID=ac59cfdf-bbad-4017-9759-e88054f3f242&CFTOKEN=0&q=njcomputerrepair%2Bbrick%2Bnj&oq=njcomp&aqs=chrome.1.69i60j69i59j69i60j69i57j0l2.2762j0j9&sourceid=chrome&ie=UTF-8#lrd%3D0x89c18348735c2907%3A0x59aa614832a36b22%2C3%2C

如何阻止ColdFusion更改URL并保持id与数据库中的存储方式完全相同?

更新

所以我发现URLdecode会保留字符串。这就是我所拥有的。

#urlDecode(getURL.redirectURL)#

输出如下

https://www.google.com/search?CFID=ac59cfdf-bbad-4017-9759-e88054f3f242&CFTOKEN=0&q=njcomputerrepair+brick+nj&oq=njcomp&aqs=chrome.1.69i60j69i59j69i60j69i57j0l2.2762j0j9&sourceid=chrome&ie=UTF-8#lrd=0x89c18348735c2907:0x59aa614832a36b22,3

为什么要在网址中添加CFID和CFTOKEN?我在Application.CFM中关闭了它:

<cfapplication name="yaya" 
    clientmanagement="no" 
    sessionmanagement="no" 
    setclientcookies="no" 
    setdomaincookies="no"
    sessiontimeout="#CreateTimeSpan(0,2,0,0)#" 
    applicationtimeout="#CreateTimeSpan(1,0,0,0)#"
      >

1 个答案:

答案 0 :(得分:0)

要帮助其他人来到这里:

cflocation有一个参数addToken,如果我们不想将noCFID添加到生成的URL,则需要将其设置为CFTOKEN。 / p>

Adob​​e CFML参考:https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-tags/tags-j-l/cflocation.html