Как заставить Wget обрабатывать ответ HTTP 100-Continue?

StackOverflow https://stackoverflow.com/questions/126711

  •  02-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь ОПУБЛИКОВАТЬ HTML (содержащийся в файле) на URL-адрес, используя Wget вот так:

wget -O- --debug
     --header=Content-Type:text/html
     --post-file=index.html
     http://localhost/www/encoder.ashx

URL, на который отправляется HTML-код, является конечной точкой веб-приложения, реализованной с использованием ASP.NET.Сервер отвечает сообщением 100 (Продолжить) response и Wget просто останавливается как вкопанный, вместо того чтобы продолжать реальный ответ , который следует следуйте дальше.

Можно ли каким-то образом сообщить Wget, чтобы он выдал ответ 100 (Продолжить), или это какое-то хорошо известное ограничение инструмента?

Примечания:

  • Я заметил, что wget не отправляет в Expect: 100-Continue заголовок технически сервер не должен быть выпуск 100 (ПРОДОЛЖИТЬ) ответ.

    Обновить: Похоже, это возможно, согласно §8.2.3 из RFC 2616 (Протокол передачи гипертекста - HTTP/1.1):

    Исходный сервер НЕ ДОЛЖЕН отправлять ответ 100 (Продолжить), если сообщение запроса не содержит ожидаемого заголовка запроса поле с ожидаемым значением "100-продолжить" и не должен отправлять 100 (Продолжить) ответ, если такой запрос поступает с HTTP /1.0 (или более ранний) клиент.Из этого правила есть исключение:для обеспечения совместимости с RFC 2068, сервер МОЖЕТ отправить статус 100 (Продолжить) в ответ на запрос HTTP / 1.1 PUT или POST, который не включает поле заголовка ожидаемого запроса с ожидаемым значением "100- продолжить". Это исключение, целью которого является минимизация любых задержек обработки клиентом, связанных с необъявленным статусом ожидания 100 (Продолжить), применяется только к запросам HTTP / 1.1, а не к запросам с любым другим HTTP- значение версии.

  • Завиток не имеет никаких проблем с такой транзакцией.Это отправит Expect: 100-Continue заголовок и продолжил с ответом 100 (Продолжить) перейдем к реальному.

Для получения дополнительной информации, вот полная отладочная трассировка транзакции из вызова, показанного выше:

Setting --post-file (postfile) to index.html
Setting --header (header) to Content-Type:text/html
DEBUG output created by Wget 1.10 on Windows.

--13:29:17--  http://localhost/www/encoder.ashx
           => `-'
Resolving localhost... seconds 0.00, 127.0.0.1
Caching localhost => 127.0.0.1
Connecting to localhost|127.0.0.1|:80... seconds 0.00, connected.
Created socket 296.
Releasing 0x01621a10 (new refcount 1).

---request begin---
POST /www/encoder.ashx HTTP/1.0
User-Agent: Wget/1.10
Accept: */*
Host: localhost
Connection: Keep-Alive
Content-Type: text/html
Content-Length: 30984

---request end---
[writing POST file index.html ... done]
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 100 Continue
Server: ASP.NET Development Server/9.0.0.0
Date: Wed, 24 Sep 2008 11:29:17 GMT
Content-Length: 0

---response end---
100 Continue
Closed fd 296
13:29:17 ERROR 100: Continue.
Это было полезно?

Решение

Я просмотрел исходный код wget для Windows, и, насколько я могу судить, вывод отладки исходит из общего условия ошибки, когда wget не удается правильно проанализировать ответ.Похоже, это всего лишь ограничение wget, поэтому вам, вероятно, придется использовать curl или какой-либо другой метод, чтобы избежать возникновения этой проблемы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top