Кажется, я не могу разобраться с этим. Я использую HttpWebRequest, чтобы попытаться отправить некоторые данные на другой сайт. Я пытаюсь найти лучший способ настроить наши брандмауэры, но я в растерянности. Наблюдая за трассировкой NetMon, кажется, что она игнорирует то, что я ей говорю; заголовки HTTP, которые я вижу, выходят из запроса (не запрос браузера к моему серверу, а запрос сервера к удаленному серверу) не суммируются.
Http: Request, CONNECT some.random.url:443
Command: CONNECT
URI: some.random.url:443
Location: some.random.url:443
ProtocolVersion: HTTP/1.1
Host: some.random.url
ProxyConnection: Keep-Alive
HeaderEnd: CRLF
Протокол TCP DstPort также всегда начинается с HTTP (80). Я не могу заставить его справиться с 443 изначально, несмотря ни на что; SSL начинается с согласования порта 80, прежде чем он начинает "реальную" передачу? При загрузке этот запрос, похоже, игнорирует любые настройки HttpWebRequest, которые я пытаюсь установить перед инициацией запроса: даже если я установил HTTP 1.0 или keep-alive, равный false, он все равно начинается с указанных выше заголовков.
Что это делает? Я хотел бы знать, как пропустить это, но я не уверен, почему это демонстрирует такое поведение?
Код ниже, если это поможет.
Uri newUri = new Uri("https://some.random.url:443/random");
System.Net.HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(newUri);
wr.Method = "POST";
wr.ContentType = "application/x-www-form-urlencoded";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] requestBytes = encoding.GetBytes("test");
wr.ContentLength = requestBytes.Length;
System.IO.Stream stream = wr.GetRequestStream(); //FAILS HERE, ServerProtocolViolation
Я обыскал Google и другие проблемы с SSL / HttpWebRequest, но не смог найти серебряную пулю.