尽管 RFC 声明唯一命名的标头的顺序无关紧要,但我发送此请求的网站确实对标头的顺序进行了检查。
这有效:
GET https://www.thewebsite.com HTTP/1.1
Host: www.thewebsite.com
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 etc
Run Code Online (Sandbox Code Playgroud)
这不起作用:
GET https://www.thewebsite.com HTTP/1.1
Accept: */*
User-Agent: Mozilla/5.0 etc
Host: www.thewebsite.com
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)
默认情况下HttpWebRequest似乎将Host和Connection标题放在最后,在空行之前,而不是在 url 之后。
有什么方法(HttpWebRequest甚至在 Nuget 中使用 fork或其他库)来指定HttpWebRequest.
如果可能的话,我宁愿不开始沿着实现代理的路线对它们进行排序或不得不使用TcpClient.
我很感激这方面的任何提示。
更新:随着 Fiddler 的运行,HttpWebrequest 中的标头顺序可以在 CustomRules.cs 中重新排列。尽管如此,仍然没有更接近没有代理的解决方案。