计网课程设计的一个要求是只能使用 socket ,即 TCP 以上需要自己实现,目前已经实现了一个类似 python 的 requests 的 HTTP 请求库,但我发现在访问我的博客时,因为开启了 HSTS ,自动 301 到 HTTPS ,导致无法访问
在网上搜索了一番,这方面的情况reddit 这篇帖子 总结的很好。不过我并没有找到那种能由我自己控制握手,协商等整个 HTTPS 流程的,基本上是提供加密后的 socket (暂时称呼它为 securit socket),如tokio-rustls,openssl 提供的一个例子我觉得比较接近答案了,但仍然有不符合课设要求的嫌疑
总的来说,需求如下
- rust 实现,因为我使用了 flutter-rust-bridge ,这也是作为一个亮点
- 至少能够在 linux,windows,android 上使用
- 必须自己操作原始的 socket
- 不要太复杂!我目前对 TLS 并不是很熟悉,计网课程也是完全没讲 TLS
当然我也有点觉得课程的要求有点无理了,所以我会花有限的时间摸索一下