setRequestHeader 之后不能 getResponseHeader 么??
在做一个xmlhttp提交cookie的时候,碰到一个问题代码是这样的.MyCook是一个全局变量,用来保存cookie,在页面传递,第一次运行时是空的IfReferer...
在做一个xmlhttp提交cookie的时候,碰到一个问题
代码是这样的.
MyCook 是一个全局变量,用来保存cookie,在页面传递,第一次运行时是空的 If Referer <> "" Then http.setRequestHeader "Referer", Referer
If MyCook <> "" Then http.setRequestHeader "Cookie", MyCook
http.send
If http.ReadyState = 4 Then
Form1.coo.Text = http.getAllResponseHeaders
GetCode = BytesToBstr(http.responseBody, gCode)
MyCook = http.getResponseHeader("Set-Cookie")
End If
复制代码我不是很清楚我这样写是不是有什么逻辑上的问题.我把这段代码放在 Timer里运行,间隔几秒刷新
现在的问题是,在Timer运行的第一次,是没有问题的
.http.getAllResponseHeaders可以获取
MyCook = http.getResponseHeader("Set-Cookie") 也可以正常获取Cookie
但是到了Timer第二次运行的时候,Vb就报错了,
实时错误 '-2147012746 (80072f76)';
The requested header was not found
意思是没有cookie...返回,提交了cookie,就不返回cookie了么 ???
请问, 在设置 http.setRequestHeader "Cookie", MyCook 之后
就不能再 MyCook = http.getResponseHeader("Set-Cookie") 了么
http在获取到cookie, 每次刷新应该是会提交cookie的啊
这里为什么发送cookie之后, 就不能在获取cookie了呢.
请指教...谢谢了.....
百度的排版有点问题, 看这里可能清楚一点
http:// www. vbgood.com/thread-100680-1-1.html 展开
代码是这样的.
MyCook 是一个全局变量,用来保存cookie,在页面传递,第一次运行时是空的 If Referer <> "" Then http.setRequestHeader "Referer", Referer
If MyCook <> "" Then http.setRequestHeader "Cookie", MyCook
http.send
If http.ReadyState = 4 Then
Form1.coo.Text = http.getAllResponseHeaders
GetCode = BytesToBstr(http.responseBody, gCode)
MyCook = http.getResponseHeader("Set-Cookie")
End If
复制代码我不是很清楚我这样写是不是有什么逻辑上的问题.我把这段代码放在 Timer里运行,间隔几秒刷新
现在的问题是,在Timer运行的第一次,是没有问题的
.http.getAllResponseHeaders可以获取
MyCook = http.getResponseHeader("Set-Cookie") 也可以正常获取Cookie
但是到了Timer第二次运行的时候,Vb就报错了,
实时错误 '-2147012746 (80072f76)';
The requested header was not found
意思是没有cookie...返回,提交了cookie,就不返回cookie了么 ???
请问, 在设置 http.setRequestHeader "Cookie", MyCook 之后
就不能再 MyCook = http.getResponseHeader("Set-Cookie") 了么
http在获取到cookie, 每次刷新应该是会提交cookie的啊
这里为什么发送cookie之后, 就不能在获取cookie了呢.
请指教...谢谢了.....
百度的排版有点问题, 看这里可能清楚一点
http:// www. vbgood.com/thread-100680-1-1.html 展开
1个回答
展开全部
首先,你要明白http协议的原理
你在send之前用setRequestHeader 是设置了发送给服务器的http头信息
所以,你在发送的时候,http的头是由你来控制的(xmlhttp也会自己控制,只是提供了一个setRequestHeader方法可以让你来自定义部分内容)
而服务器在发送回来的时候,http头信息是由服务器来控制的..
并不是说你send的时候加入了cookie,服务器在response的时候就一定要返回一个set-cookie
还有就是服务器返回的时候,http头可能包含了多个set-cookie,而且,一个cookie信息通常包含cookie名,cookie值,有效期还有作用域,你只用一个变量在管理cookie显然很难达到你想要的效果....
如果你要获取response的cookie信息,应该先用instr判断下,responseheader里面有没set-cookie,然后再对set-cookie进行分析,这样就不会出错了
你在send之前用setRequestHeader 是设置了发送给服务器的http头信息
所以,你在发送的时候,http的头是由你来控制的(xmlhttp也会自己控制,只是提供了一个setRequestHeader方法可以让你来自定义部分内容)
而服务器在发送回来的时候,http头信息是由服务器来控制的..
并不是说你send的时候加入了cookie,服务器在response的时候就一定要返回一个set-cookie
还有就是服务器返回的时候,http头可能包含了多个set-cookie,而且,一个cookie信息通常包含cookie名,cookie值,有效期还有作用域,你只用一个变量在管理cookie显然很难达到你想要的效果....
如果你要获取response的cookie信息,应该先用instr判断下,responseheader里面有没set-cookie,然后再对set-cookie进行分析,这样就不会出错了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询