首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Coldfusion CFHTTP.Responseheader

Coldfusion CFHTTP.Responseheader
EN

Stack Overflow用户
提问于 2012-08-07 02:53:34
回答 3查看 2.2K关注 0票数 3

我正试图弄清楚如何读取cfhttp.responseHeader的内容,简直要发疯了。我正在尝试访问一个网站,该网站在响应中发送了几个cookie。我需要从响应中提取它们。然后将Cookie值与所有将来的请求一起发送。我尝试使用以下代码:

代码语言:javascript
复制
<cfloop collection = #cfhttp.responseHeader# item = "httpHeader">
  <cfset value = cfhttp.responseHeader[httpHeader]>
    <cfif IsSimpleValue(value)>
      <cfoutput>
      #httpHeader# : #value#<BR>
      </cfoutput>
<cfelse>
      <cfloop index = "counter" from = 1 to = #ArrayLen(value)#>
       <cfoutput>
        #httpHeader# : #value[counter]#<BR> 
       </cfoutput>
 </cfloop>
</cfif>

但这会抛出以下错误

代码语言:javascript
复制
Object of type class coldfusion.util.FastHashtable cannot be used as an array  


The error occurred in C:/inetpub/wwwroot/cfdocs/Response.cfm: line 22

20 :     </cfoutput>
21 :   <cfelse>
22 :     <cfloop index = "counter" from = 1 to = #ArrayLen(value)#>
23 :       <cfoutput>
24 :         #httpHeader# : #value[counter]#<BR> 
EN

回答 3

Stack Overflow用户

发布于 2012-08-07 03:25:32

您可以像这样检索cookie:

代码语言:javascript
复制
<cfset cookies = cfhttp.responseHeader["set-cookie"] />

<cfdump var="#cookies#" />

然后,您可以使用该cookie结构数据进行后续请求。

票数 3
EN

Stack Overflow用户

发布于 2013-10-28 18:17:47

问题是你试图在一个结构上循环,但却把它当作一个数组。你需要使用“集合”来循环结构。

代码语言:javascript
复制
<cfloop collection="#cfhttp.responseHeader['set-cookie']#" item="sKey">
    .....
</cfloop>
票数 1
EN

Stack Overflow用户

发布于 2014-11-13 05:46:49

这是我使用Ben Nadel网站上的引用来获取标题cookie的脚本。

代码语言:javascript
复制
public struct function GetResponseCookies(required struct Response){
    var LOCAL = {};
    LOCAL.Cookies = {};

    if(!StructKeyExists(ARGUMENTS.Response.ResponseHeader,"Set-Cookie")){
        return LOCAL.Cookies;
    }

    LOCAL.ReturnedCookies = ARGUMENTS.Response.ResponseHeader[ "Set-Cookie" ];

    if(!isStruct(LOCAL.ReturnedCookies)){
        return LOCAL.Cookies;
    }

    for(LOCAL.CookieIndex in LOCAL.ReturnedCookies){
        LOCAL.CookieString = LOCAL.ReturnedCookies[ LOCAL.CookieIndex ];

        for(LOCAL.Index =1; Local.Index != ListLen( LOCAL.CookieString, ';' ); LOCAL.Index++){
            LOCAL.Pair = ListGetAt(LOCAL.CookieString,LOCAL.Index,";");
            LOCAL.Name = ListFirst( LOCAL.Pair, "=" );

            if(ListLen( LOCAL.Pair, "=" ) > 1){
                LOCAL.Value = ListRest( LOCAL.Pair, "=" );
            } else {
                LOCAL.Value = "";
            }

            if(LOCAL.Index EQ 1){
                LOCAL.Cookies[ LOCAL.Name ] = {};
                LOCAL.Cookie = LOCAL.Cookies[ LOCAL.Name ];
                LOCAL.Cookie.Value = LOCAL.Value;
                LOCAL.Cookie.Attributes = {};
            } else {
                LOCAL.Cookie.Attributes[ LOCAL.Name ] = LOCAL.Value;
            }
        }
    }
    return LOCAL.Cookies;   
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11834128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档