Domanda

Sto cercando di inviare un HTML (contenuto in un file) a un URL usando Wget in questo modo:

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

L'URL in cui viene postato l'HTML è un end-point dell'applicazione Web implementato utilizzando ASP.NET. Il server risponde con una 100 (Continua) e Wget semplicemente si ferma nelle sue tracce piuttosto che continuare con la reale risposta che dovrebbe seguire dopo.

A Wget può essere in qualche modo detto di dare una risposta da 100 (Continua) o si tratta di una limitazione ben nota dello strumento?

Note:

  • Ho notato che Wget non invia mai l'intestazione Expect: 100-Continue così tecnicamente il server non dovrebbe essere emettendo una risposta 100 (continua).

    AGGIORNAMENTO: sembra che questo sia possibile, come da & # 167; 8.2.3 di RFC 2616 (Hypertext Transfer Protocol - HTTP / 1.1) :

      

    Un server di origine NON DOVREBBE inviare una risposta 100 (Continua) se   il messaggio di richiesta non include un header di richiesta Expect   campo con il "quot-100-continue" aspettativa e NON DEVE inviare a   100 (Continua) risposta se tale richiesta proviene da un HTTP / 1.0   (o precedente) client. C'è un'eccezione a questa regola: per   compatibilità con RFC 2068, un server PUO 'inviare un 100 (Continua)   stato in risposta a una richiesta PUT o POST HTTP / 1.1 che lo fa   non includere un campo di intestazione richiesta Expect con " 100-   continua " aspettativa. Questa eccezione, il cui scopo è   minimizzare eventuali ritardi nell'elaborazione del client associati a un   attesa non dichiarata per lo stato 100 (Continua), si applica solo a   Richieste HTTP / 1.1 e non richieste con altri HTTP-   valore della versione.

  • cURL non ha problemi con tale transazione. Invia un'intestazione Expect: 100-Continue e ha continuato con 100 (Continua) risposta su quello vero.

Per ulteriori informazioni, ecco la traccia di debug completa della transazione dall'invocazione mostrata sopra:

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.
È stato utile?

Soluzione

Ho esaminato il codice sorgente per wget per Windows e, per quanto ne so, l'output di debug proviene dalla condizione di errore generico quando wget non riesce ad analizzare correttamente la risposta. Sembra che questo sia solo un limite di wget, quindi probabilmente dovrai usare curl o qualche altro metodo per evitare di riscontrare questo problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top