c# - .NET / C# 中的 HTTP GET 而不是 HTTP Connect
问题描述
如何在不使用 HTTP Connect 方法但使用 HTTP Get 方法的情况下进行 HTTP 隧道。https://en.wikipedia.org/wiki/HTTP_tunnel#HTTP_CONNECT_tunneling我试过了IHttpClientFactory
,RestSharp
两者都在建立 HTTP 连接。在 node.js 请求模块中,有一个名为的参数tunnel
,当 false 使用 HTTP Get 建立连接时,我该如何在 .NET 中做类似的事情。非常感谢您的帮助,一直在寻找这个
Capture1 - C# 使用代理服务器时,http 客户端使用 HTTP Connect 创建隧道
Frame 331: 159 bytes on wire (1272 bits), 159 bytes captured (1272 bits) on interface \Device\NPF_{262229C1-C486-4F85-BCC8-BFC96981C755}, id 0
Ethernet II, Src: IntelCor_37:28:37 (dc:41:a9:37:28:37), Dst: TaicangT_80:60:30 (18:45:93:80:60:30)
Internet Protocol Version 4, Src: {myLocalIp}, Dst: {proxyServerIp}
Transmission Control Protocol, Src Port: 51694, Dst Port: 8888, Seq: 1, Ack: 1, Len: 105
Hypertext Transfer Protocol
CONNECT {host}:443 HTTP/1.1\r\n
Host: {host}:443\r\n
User-Agent: RestSharp/106.11.8.0\r\n
\r\n
[Full request URI: {url}:443]
[HTTP request 1/1]
[Response in frame: 341]
Capture2 - 带有隧道:false 的 node.js,此请求也通过相同的代理服务器,但通过普通的 HTTP GET 方法并且没有隧道
Frame 92: 393 bytes on wire (3144 bits), 393 bytes captured (3144 bits) on interface \Device\NPF_{262229C1-C486-4F85-BCC8-BFC96981C755}, id 0
Ethernet II, Src: IntelCor_37:28:37 (dc:41:a9:37:28:37), Dst: TaicangT_80:60:30 (18:45:93:80:60:30)
Internet Protocol Version 4, Src: {myLocalIp}, Dst: {proxyServerIp}
Transmission Control Protocol, Src Port: 51842, Dst Port: 8888, Seq: 1, Ack: 1, Len: 339
Hypertext Transfer Protocol
GET {url} HTTP/1.1\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15\r\n
x-cache-proxyname: i-05ad6154426f07671\r\n
host: {host}\r\n
Connection: close\r\n
\r\n
[Full request URI: {url}]
[HTTP request 1/1]
[Response in frame: 96]
解决方案
推荐阅读
- swift - 如何在组合中实现正确的 switchMap 运算符?
- javascript - JavaScript 中的对象字面量和类有什么区别?
- java - 不从@Mapper 接口调用@AfterMapping
- laravel - 如何同时以另一个用户身份登录
- arrays - 在未排序数组中搜索的有效方法
- reactjs - react-dropzone 图像在上传时旋转
- python - 处理python和oracle之间异常握手的正确方法
- c++ - 从较大的矩阵中提取未知大小的子矩阵,同时值等于指定值
- powershell - Enable-PSRemoting 错误:找不到名称为“winrm”的任何服务
- javascript - 'npm start' 命令不执行任何操作