需要帮助了解 Coldfusion URL 推荐
Need help understanding Coldfusion URL Referral
我有一个 ColdFusion 站点,我需要在该站点上根据用户到达页面的方式显示不同的文本。
即
<cfif user comes from sitemap.cfm>
Display this text
<cfelse>
display this text
</cfif>
有人能给我指出正确的方向吗?
您想查看 CGI 环境变量,特别是 HTTP_REFERER
(不,这没有拼错——或者,我应该说,CGI 变量的名称拼错了)。
我相信 HTTP_REFERER
的值将包含整个 URL,包括查询字符串,因此您必须解析它——或者可能使用 CONTAINS
或 findNoCase()
在你的 <cfif>
语句中:
<cfif findNoCase("sitemap.cfm", cgi.HTTP_REFERER)>
Display this text
<cfelse>
display this text
</cfif>
重要的是要注意,如果您要从 HTTP
到 HTTPS
,HTTP_REFERER
的值将为空,我相信反之亦然。
使用 CGI.HTTP_REFERER
是 David Faber 提到的一种可能的解决方案。这是最简单的方法,我会推荐它。
如果您出于某种原因不信任或不能信任 CGI.HTTP_REFERER
值,那么另一种解决方案是对您的用户(更准确地说是他的 http 请求)实施一种跟踪。例如你可以:
- 在
Session
范围(而不是 Request
范围)中使用(键,值)例如通过在 Application.cfm
中的 onRequestStart(String targetPage)
中实现它(或直接在 sitemap.cfm 中?)。然后根据 targetPage
值和你的 SESSION[key]
值做你需要或想做的事。
- 使用相同的技术,但使用
COOKIE
范围(或使用 cfcookie
?)。取决于 http 请求工作流程...
我认为可能还有其他跟踪技术,这取决于您:-)
我有一个 ColdFusion 站点,我需要在该站点上根据用户到达页面的方式显示不同的文本。
即
<cfif user comes from sitemap.cfm>
Display this text
<cfelse>
display this text
</cfif>
有人能给我指出正确的方向吗?
您想查看 CGI 环境变量,特别是 HTTP_REFERER
(不,这没有拼错——或者,我应该说,CGI 变量的名称拼错了)。
我相信 HTTP_REFERER
的值将包含整个 URL,包括查询字符串,因此您必须解析它——或者可能使用 CONTAINS
或 findNoCase()
在你的 <cfif>
语句中:
<cfif findNoCase("sitemap.cfm", cgi.HTTP_REFERER)>
Display this text
<cfelse>
display this text
</cfif>
重要的是要注意,如果您要从 HTTP
到 HTTPS
,HTTP_REFERER
的值将为空,我相信反之亦然。
使用 CGI.HTTP_REFERER
是 David Faber 提到的一种可能的解决方案。这是最简单的方法,我会推荐它。
如果您出于某种原因不信任或不能信任 CGI.HTTP_REFERER
值,那么另一种解决方案是对您的用户(更准确地说是他的 http 请求)实施一种跟踪。例如你可以:
- 在
Session
范围(而不是Request
范围)中使用(键,值)例如通过在Application.cfm
中的onRequestStart(String targetPage)
中实现它(或直接在 sitemap.cfm 中?)。然后根据targetPage
值和你的SESSION[key]
值做你需要或想做的事。 - 使用相同的技术,但使用
COOKIE
范围(或使用cfcookie
?)。取决于 http 请求工作流程...
我认为可能还有其他跟踪技术,这取决于您:-)