如何使用tcl http包将cookie信息设置到头文件中

时间:2013-11-26 12:03:42

标签: http tcl

我创建了一些登录服务器的标头, 登录到服务器之后,我使用以下标题使用geturl操作将一个页面移动到另一个页面,但是我登出服务器的问题我没有进一步深入。

我认为它缺少了cookie信息。

set headers(Accept) "text/html\;q=0.9,text/plain\;q=0.8,image/png,*/*"
set headers(Accept-Language) "en-us,en\;q=0.5"
set headers(Accept-Charset) "ISO-8859-1,utf-8\;q=0.7,*\;q=0.7"
set headers(Proxy-Authorization) "[concat \"Basic\" [base64::encode $username:$password]]"

如果有人解释,我不知道如何将cookie信息设置到标题中。

由于 Malli

2 个答案:

答案 0 :(得分:0)

Tcl中的Cookie支持目前非常原始;我的fossil repository中有95-99%的修复,但这对你没什么帮助。但是为了直接处理用于登录目的的会话cookie,你可以“游击黑客”它。

发送cookie

要将Cookie发送到服务器,您需要发送标头Cookie: thecookiestring。这是通过将-headers选项传递给http::geturl来完成的,set headers(Cookie) $thecookiestring set token [http::geturl $theurl -headers [array get headers]] # ... 具有描述要传递的内容的字典。我们可以从阵列中得到足够的信息:

Set-Cookie

接收cookie

这绝对是一件容易的事。更难的部分是,当您执行登录操作时,还需要在响应中检查http::meta标头。您可以使用foreach获取该内容,然后使用set thecookiestring "" set token [http::geturl $theloginurl ...] if {[http::ncode $token] >= 400} {error ...} foreach {name value} [http::meta $token] { if {$name ne "Set-Cookie"} continue # Strip the stuff you probably don't care about if {$thecookiestring ne ""} {append thecookiestring "; "} append thecookiestring [regsub {;.*} $value ""] } 遍历列表:

{{1}}

正式地,可以有许多cookie,它们具有各种复杂的功能。处理它们就是我在化石分支中所做的工作......

我假设您不需要忘记cookie,管理持久存储或其他此类复杂性。 (毕竟,它们是您正常登录会话可能不需要的东西。)

答案 1 :(得分:0)

我使用此工具Fiddler

解决了问题

全部谢谢