giovedì 27 ottobre 2016

Invio dati a web server

ho un dubbio per quanto riguarda l’invio di dati al Web Server. Abbiamo detto che a seconda del valore di METHOD il browser fa una richiesta di tipo GET oppure POST. 

Se la richiesta è di tipo GET sarà del tipo: 

GET / script?QueryString 

….

linea vuota 


Non mi è ben chiaro perché, se usiamo GET per richiedere dei dati al server, aggiungiamo in coda allo script la QueryString. 


Perché il mondo reale è fatto di cose brutte e fatte male. Ormai dovrebbe essere chiaro. GET in inglese ha centomila significati, moltissimi legati al concetto di "prendere". Le richieste GET si usano per prendere documenti da un server. Purtroppo si usano anche per inviare dati ad un server, usando quel meccanismo ignobile (query string appesa in coda all'URL; il programma eseguito dal server estrae i dati dalla query string).

Non c'è quindi un motivo logico. E' così.

Anche in questo caso stiamo trasmettendo dei dati al server? 

Si, vedi sopra.

E' il caso di quando inseriamo dei dati nel motore di ricerca? 

Quando si inseriscono dati in un motore di ricerca, questi possono essere trasmessi con GET oppure con POST. Dipende da come è fatto il documento che ha inviato il motore di ricerca e da come è strutturato il programma del motore di ricerca.

Google invia dati tramite GET. Lo si può capire con i developer tools di chrome, o con un qualsiasi software in grado di mostrare il traffico HTTP. Lo si può capire anche analizzando la home page di google:




Lo si può capire indirettamente anche in questo modo: https://www.google.it/search?q=trieste

Clickando su quel link il browser esegue le stesse operazioni che esegue per ogni altro link, cioè invia una richiesta GET verso l'URL visualizzato (ho costruito il link in modo che il testo visualizzato coincida con l'URL). Il documento che si ottiene come risposta è la risposta standard di Google. Pertanto, Google è predisposto per ricevere dati via GET.

Inviando i dati a Google nel modo "canonico" (cioè nel form di google.it) si ottiene un documento di risposta il cui URL ha una query string con più coppie nome=valore (sopra ce n'era solo una). Ad esempio:

https://www.google.it/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=grande%20kaka

Clickando su questo link si ottiene ancora lo stesso documento di risposta (o lo si dovrebbe ottenere). Soprattutto, si osservano cose buone e giuste.