Effettua richieste HTTP senza curl

Potresti lavorare su un server senza curl o wget. Devi testare un endpoint ma questi strumenti mancano. Puoi usare Bash per inviare richieste HTTP direttamente.

Bash ha una funzionalità nascosta chiamata /dev/tcp. Non si tratta di un file reale. È un dispositivo speciale che Bash riconosce. Quando scrivi in /dev/tcp/hostname/port, Bash apre una connessione TCP per te.

Come funziona:

Si utilizza il comando exec per gestire i descrittori di file. Ad esempio, puoi aprire il descrittore di file 3 per la lettura e la scrittura.

La sintassi è la seguente: exec 3<>/dev/tcp/example.com/80

Una volta aperta la connessione, puoi inviarvi dati. Puoi anche leggere i dati da essa. Questo metodo ti mostra come funziona il protocollo HTTP a basso livello.

Come effettuare una richiesta GET:

Per ottenere i dati, devi inviare gli header corretti. È necessaria una riga vuota alla fine per segnalare la fine della richiesta.

Segui questi passaggi:

Esempio di script:

HOST="example.com" PORT=80 REQUEST_PATH="/" exec 3<>/dev/tcp/${HOST}/${PORT} printf "GET ${REQUEST_PATH} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3 cat <&3 exec 3>&-

Questa tecnica ti aiuta a capire come client e server comunicano tra loro. È una competenza utile per il debugging su sistemi minimalisti.

Fonte: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-til-you-can-make-http-requests-without-curl-using-bash-devtcp-578k