Come posso impostare l'intestazione della richiesta per l'arricciatura?


197

Come passerei più valori nell'intestazione per una curlrichiesta?


Hai un esempio che stai usando proprio ora che potresti mostrarci?
Ryan Bigg,

4
aggiungi più flag -H. Ad esempiocurl -H "Content-Type : application/json" -H "Authorization : Token token='yourtokenhere'"
gsumk, il

Risposte:


242

Usa il -Hparametro più volte:

curl -H "Accept-Charset: utf-8" -H "Content-Type: application/x-www-form-urlencoded" http://www.some-domain.com

Cosa succede se l'intestazione contiene "?
Freewind

2
@Freewind racchiude il valore con una virgoletta singola anziché una doppia o evita. Stessa cosa che fai sempre in quel caso.
Darth Egregious,

47

A volte cambiare l'intestazione non è sufficiente, alcuni siti controllano anche il referer:

curl -v \
     -H 'Host: restapi.some-site.com' \
     -H 'Connection: keep-alive' \
     -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
     -H 'Accept-Language: en-GB,en-US;q=0.8,en;q=0.6' \
     -e localhost \
     -A 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65 Safari/537.36' \
     'http://restapi.some-site.com/getsomething?argument=value&argument2=value'

In questo esempio il referer (-e o --referer in curl) è 'localhost'.


45

Per passare più intestazioni in una richiesta di arricciatura, è sufficiente aggiungere ulteriori -Ho --headeral comando di arricciatura.

Esempio

//Simplified
$ curl -v -H 'header1:val' -H 'header2:val' URL

//Explanatory
$ curl -v -H 'Connection: keep-alive' -H 'Content-Type: application/json'  https://www.example.com

Andare avanti

Per i campi di intestazione HTTP standard come User-Agent , Cookie , Host , esiste effettivamente un altro modo per impostarli. Il comando curl offre opzioni designate per l'impostazione di questi campi di intestazione:

  • -A (o --user-agent): imposta il campo "User-Agent".
  • -b (o --cookie): imposta il campo "Cookie".
  • -e (o --referer): imposta il campo "Referer".
  • -H (o --header): imposta il campo "Header"

Ad esempio, i seguenti due comandi sono equivalenti. Entrambi cambiano la stringa "User-Agent" nell'intestazione HTTP.

    $ curl -v -H "Content-Type: application/json" -H "User-Agent: UserAgentString" https://www.example.com
    $ curl -v -H "Content-Type: application/json" -A "UserAgentString" https://www.example.com
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.