Questo materiale fa parte della serie "Introduzione allo sviluppo aziendale". Articoli precedenti:
CIAO! Oggi impareremo i protocolli HTTP e HTTPS. Ma prima chiariamo un punto: stiamo parlando di protocolli per l'invio di dati in rete a livello applicativo del modello OSI. Ricorderete che abbiamo conosciuto il modello OSI in uno degli articoli precedenti. Se non te lo ricordi, eccolo qui .

Cos'è un protocollo di comunicazione dati?
Questo è ciò che chiamiamo l'insieme concordato di regole che consente agli sviluppatori di diversi servizi di inviare informazioni in un formato comprensibile agli altri. Ad esempio, puoi utilizzare Google Chrome per ottenere informazioni sia da Facebook che da Twitter, perché gli sviluppatori le inviano utilizzando il protocollo HTTP standard, che consente al tuo browser di elaborarle. Le regole uniformi sono molto convenienti per le persone che sviluppano la parte server: ci sono molte librerie che possono convertire le informazioni per te e inviarle utilizzando il protocollo appropriato. HTTP è stato inizialmente concepito come un protocollo per l'invio di pagine HTML. Questo è il modo in cui è stato usato per molto tempo, ma ora i programmatori lo usano spesso per inviare sia stringhe che file multimediali. In generale, questo protocollo è universalmente accettato e versatile ed è davvero facile da usare. E ora esamineremo come usarlo.La struttura dell'HTTP
Dovremmo notare subito che il protocollo HTTP consiste solo di testo. Ciò che più ci interessa è la struttura di questo testo. Ogni messaggio è composto da tre parti:- Linea di partenza: definisce alcuni dati di pulizia.
- Intestazioni: descrivono i parametri del messaggio.
- Corpo: questo è il contenuto del messaggio. Il corpo deve essere separato dalle intestazioni da una riga vuota.
Ecco come appare una semplice richiesta HTTP:
GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
La linea di partenza indica:
- GET — Il metodo della richiesta
- / — Il percorso della richiesta
- HTTP/1.1 — La versione del protocollo
- Host : l'host a cui è indirizzata la richiesta
- User-Agent : il client che invia la richiesta
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
dove codegym.cc è l'host, /send è il percorso della richiesta e ? è un separatore che indica che seguono i parametri della query. Alla fine, vengono elencate le coppie chiave-valore ("chiave=valore"), separate da una e commerciale. POST — Questo metodo pubblica informazioni sul server. Una richiesta POST può inviare vari tipi di informazioni: parametri come coppie "chiave=valore", JSON, codice HTML o persino file. Tutte le informazioni vengono inviate nel corpo del messaggio. Per esempio:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc
{
"Id": 12345,
"User": "John"
}
La richiesta viene inviata a codegym.cc/user/create/json e la versione del protocollo è HTTP/1.1. "Accetta" indica il formato della risposta che il client si aspetta di ricevere. "Content-Type" indica il formato del corpo del messaggio inviato nella richiesta. "Content-Length" è il numero di caratteri nel corpo. Una richiesta HTTP può contenere molte intestazioni diverse. Per ulteriori informazioni, dai un'occhiata alle specifiche del protocollo .
Risposte HTTP
Dopo aver ricevuto una richiesta, il server la elabora e invia una risposta al client:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
La riga iniziale della risposta contiene la versione del protocollo (HTTP/1.1), il codice di stato (200) e la descrizione dello stato (OK). Le sue intestazioni includono il tipo e la lunghezza del contenuto. Il corpo della risposta contiene codice HTML che il browser visualizza come pagina HTML.
Codici di stato della risposta
Tutto è chiaro per quanto riguarda il corpo del messaggio e le intestazioni, ma dovremmo spendere qualche parola sui codici di stato. I codici di stato della risposta sono sempre di tre cifre. La prima cifra del codice indica la categoria della risposta:- 1xx - Informativo. La richiesta è stata accolta. Il server è pronto per continuare.
- 2xx — Riuscito. La richiesta è stata ricevuta, compresa ed elaborata.
- 3xx — Reindirizzamento. È necessario eseguire azioni aggiuntive per elaborare la richiesta.
- 4xx: errore del client. La richiesta contiene errori o non è conforme al protocollo.
- 5xx: errore del server. La richiesta è stata composta correttamente, ma il server non è stato in grado di elaborarla.
- 200 OK — La richiesta è stata ricevuta ed elaborata correttamente.
- 201 Creato: la richiesta è stata ricevuta ed elaborata correttamente, con conseguente creazione di una nuova risorsa o istanza.
- 301 Moved Permanently — La risorsa richiesta è stata spostata in modo permanente. Le richieste successive dovranno essere effettuate utilizzando il nuovo indirizzo.
- 307 Reindirizzamento temporaneo — La risorsa è stata spostata temporaneamente. Per ora, è possibile accedervi utilizzando l'inoltro automatico.
- 403 Forbidden — La richiesta è stata capita, ma è necessaria l'autorizzazione.
- 404 Not Found — Il server non ha trovato la risorsa a questo indirizzo.
- 501 Not Implemented — Il server non supporta la funzionalità richiesta per rispondere alla richiesta.
- 505 Versione HTTP non supportata: il server non supporta la versione specificata del protocollo HTTP.
GO TO FULL VERSION