在 tcl http 中将默认 http header 请求设置为空

set default http header request to empty in tcl http

我想将 Tcl http 包中的默认 http hrader 设置为空,然后使用字典选择性地将一些 header 放在我自己的位置。我需要这样做,因为我在我的 Tcl http 请求 header 中看到许多项目(如 sock、binary、-binary、-strict、queryoffset 等),这些项目在其他网站指定的 header 中不存在火狐之类的浏览器。我在浏览器中得到正确的响应,所以我想要浏览器发送的那些加热器。为此,我需要将 Tcl http 包中的默认 http header 设置为空,并手动设置 headers(我可以这样做)。如何清空默认的 headers?

我不太确定您对哪个 header 有疑问,但是大多数 header 都可以通过 -headers 选项轻松设置 http::geturl:

# Easiest to build the option as a dictionary
dict set opts X-Example-Header "fruitbats are mammals and this is nonsense"
dict set opts DNT "1 (Do Not Track Enabled)"

http::geturl $theurl -headers $opts

几乎所有的东西都可以用这种方式设置或覆盖,不能的东西通常与网络连接本身的管理有关(例如 keep-alive 管理、分块、压缩)并且可能是最好首先留给图书馆,因为 HTTP/1.1 是一个相当复杂的协议,用于无状态的东西。

请注意,http::geturl 的选项不会直接 转换为请求选项。这是一个 higher-level 界面…