Qual è la differenza tra
request.ContentType = "application / json; charset = utf-8";
e
webRequest.ContentType = "application / x-www-form-urlencoded";
Qual è la differenza tra
request.ContentType = "application / json; charset = utf-8";
e
webRequest.ContentType = "application / x-www-form-urlencoded";
Risposte:
Il primo caso è comunicare al server Web che si stanno pubblicando dati JSON come in:
{ Name : 'John Smith', Age: 23}
La seconda opzione è dire al server web che codificherai i parametri nell'URL come in:
Name=John+Smith&Age=23
application/x-www-form-urlencodedconfonderebbe il server (elisir usando Veleno nel mio caso) e comporterebbe un'analisi inappropriata dell'oggetto (in qualche modo convertito l'array nidificato di oggetti in una mappa, anziché in un elenco). L'uso application/jsondovrebbe essere la scelta corretta in questo caso.
webRequest.ContentType = "application / x-www-form-urlencoded";
Da dove viene il nome application / x-www-form-urlencoded ?
Se si invia una richiesta HTTP GET , è possibile utilizzare i parametri di query come segue:
http://example.com/path/to/page? Name = furetto & color = purple
Il contenuto dei campi è codificato come stringa di query. Il application/x-www-form-
urlencodednome deriva dal precedente parametro di query dell'URL, ma i parametri della query si trovano in cui il corpo della richiesta anziché l'URL.
Tutti i dati del modulo vengono inviati come una stringa di query lunga. La stringa di query contiene coppie nome- valore separate da & carattere
es. field1 = value1 & field2 = value2
Può essere una semplice richiesta chiamata semplice - non attivare un controllo di verifica preliminare
La richiesta semplice deve avere alcune proprietà. Puoi cercare qui per maggiori informazioni. Uno di questi è che sono consentiti solo tre valori per l'intestazione Content-Type per le richieste semplici
3.Per alberi di parametri prevalentemente piatti, viene provato e testato application / x-www-form-urlencoded.
request.ContentType = "application / json; charset = utf-8";
axios e superagent , due delle più popolari librerie HTTP npm, funzionano con i corpi JSON per impostazione predefinita.
{ "id": 1, "name": "Foo", "price": 123, "tags": [ "Bar", "Eek" ], "stock": { "warehouse": 300, "retail": 20 } }
Ora, se la richiesta non è semplice , il browser invia automaticamente una richiesta HTTP prima di quella originale con il metodo OPTIONS per verificare se è possibile inviare la richiesta originale in sicurezza. Se è ok, quindi inviare la richiesta effettiva. Puoi cercare qui per maggiori informazioni.
x-www-form-urlencodedper richieste AJAX come voto ecc. La risposta inviata èJSON. Penso che sia meglio avere una coppia simmetrica richiesta / risposta, cioè entrambi JSON.