使用TCL请求HTTPS时出现问题

3
我正在尝试使用TCL(OpenACS)进行以下请求。
http::register https 443 tls::socket

set url "https://encrypted.google.com"

set token [http::geturl $url -timeout 30000]

set status [http::status $token]
set answer [http::data $token]

http::cleanup $token
http::unregister https

问题在于当我读取$status变量时,它显示为"eof",$answer变量变为空。我尝试启用TLS V.1。
http::register https 443 [list tls::socket -tls1 1]

该网站仅适用于https://www.galileo.edu,而不适用于https://encrypted.google.com

我正在尝试连接的网站是https://graph.facebook.com/me/feed?access_token=,但无法连接。

我使用curl在HTTPS下检索页面内容并且可以工作,我已安装了OpenSSL,因此我看不到问题所在,有其他方法可以使用TCL进行HTTPS连接吗?

我无法确定这是否是编码问题(也许我错误地注册了https协议),或者可能是我的服务器配置不良。 希望有人能帮助!谢谢!


我在其他服务器上测试了代码,它能够正常工作,因此我认为这是服务器配置不良。 - javiertoledos
1个回答

3

嗯,我无法重现这个问题。您使用的Tcl补丁级别和tls包版本是多少?

我做了以下操作:

package require http
package require tls

# This is your code, cut-n-pasted with blank lines removed
http::register https 443 tls::socket
set url "https://encrypted.google.com"
set token [http::geturl $url -timeout 30000]
set status [http::status $token]
set answer [http::data $token]
http::cleanup $token
http::unregister https

puts $status

它会输出“ok”,$status的内容也看起来是对的(但太长无法粘贴在这里)。这是使用Tcl 8.5.2(我知道我需要升级),http 2.7和tls 1.6。


我的 TCL 版本是 8.5.6,http 是 2.7,但 tls 是 1.5。我猜我需要升级 tls 包,感谢您的帮助! - javiertoledos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接