【问题标题】:Extracting the Domain from the URL using ColdFusion使用 ColdFusion 从 URL 中提取域
【发布时间】:2018-08-18 11:48:00
【问题描述】:

我目前正在使用 CGI 变量从当前 URL 中提取完整的 URL 和主机名:

<cfset currentURL = CGI.SERVER_NAME>
<cfset host = ListFirst(currentURL, ".")>

前面的代码按预期工作。

我还想提取域。令人惊讶的是,我找不到 CGI 变量,我尝试了以下代码,但它似乎不起作用:

<cfset domain = ListLast(currentURL, "#host#")>

但是当我输出域变量时,它只显示“om”而不是“domain.com”。我在这里做错了什么?

【问题讨论】:

  • 第二个参数应该是一个分隔符。虽然这仍然会返回错误的值:“com”。另外,请记住,可能有一个子域或一个 IP,所以......字符串中有多个句点

标签: coldfusion cgi


【解决方案1】:

这是一种方法,它将处理具有多个子域部分的域(例如,local.dev.mydomain.com)。

<cfset currentURL = CGI.SERVER_NAME>

<cfset domainParts = listLen(currentURL, ".")>

<cfset domain = gettoken(currentURL,domainParts-1,".") & "." & gettoken(currentURL,domainParts,".") >

【讨论】:

    【解决方案2】:

    完整的网址是:

    '#getPageContext().getRequest().getScheme()#://#cgi.server_name#/#cgi.script_name#?#cgi.query_string#'

    这将包括协议、路径和 url 变量。

    域名就是#cgi.server_name#

    【讨论】:

    • @BrianFleishman - 你没有说这些值将如何使用,但不要使用 CGI 变量来构造一个像上面这样的 URL,除非你绝对是关于变量来源。一些网络服务器利用客户端提供的信息,使用从这些值构建的 url 可能允许恶意用户利用诸如标头注入之类的漏洞。
    猜你喜欢
    • 2019-09-24
    • 2022-01-16
    • 2018-09-08
    • 2015-03-08
    • 2021-04-12
    • 2010-10-24
    • 2013-09-17
    • 2015-11-14
    • 1970-01-01
    相关资源
    最近更新 更多