是否可以在ColdFusion MX 7中保留HTTP GET请求的大小写?

rya*_*yan 0 coldfusion http coldfusion-7

是否可以在ColdFusion MX 7中保留GET字段名称的大小写(案例保留在CF9中)?我不知疲倦地搜索了答案,但所有解决方案似乎都是POST特定的,而这是一个GET.

注意我知道RFC2616声明HTTP字段名称不区分大小写,但我们都知道规范的简单性可以偏离......

例:

给出以下ColdFusion脚本(我们称之为' url-case-test.cfm '):

<html>
    <body>
        <cfoutput>
            #structKeyList(url)#
        </cfoutput>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

并使用以下参数修饰URL导航到此脚本:

http://localhost:8080/cfusion/url-case-test.cfm?name1=value1&name2=value2&name3=value3
Run Code Online (Sandbox Code Playgroud)

我得到输出:

NAME1,NAME2,NAME3
Run Code Online (Sandbox Code Playgroud)

关于我如何保留案件的任何建议?非常感谢帮助.

Lei*_*igh 8

另一种选择是使用getParameterMap(),它返回一个区分大小写的参数结构.

<cfset map = getPageContext().getRequest().getParameterMap()>
<cfoutput>#structKeyList(map)#</cfoutput>
Run Code Online (Sandbox Code Playgroud)


ale*_*ale 5

我认为你唯一能做的就是解析CGI.QUERY_STRING值.

<cfset paramList="" />
<cfloop list="#CGI.QUERY_STRING#" index="qsparam" delimiters="&">
  <cfset paramList=listAppend(paramList,listFirst(qsparam,"=")) />
</cfloop>
<cfoutput>#paramList#</cfoutput>
Run Code Online (Sandbox Code Playgroud)

但是,不要将URL参数作为键存储在结构中,否则您将再次丢失案例.

这显然不太理想,因为您通过cfparam或cfset设置的任何URL值(或任何其他方式操作URL对象)都将丢失.