Bagaimana saya bisa mengatur header permintaan untuk ikal?

197

Bagaimana saya meneruskan beberapa nilai di header untuk curlpermintaan?

ryan
sumber
Apakah Anda memiliki contoh yang Anda gunakan saat ini sehingga dapat ditunjukkan kepada kami?
Ryan Bigg
4
tambahkan beberapa -H flag. Misalnyacurl -H "Content-Type : application/json" -H "Authorization : Token token='yourtokenhere'"
gsumk

Jawaban:

242

Cukup gunakan -Hparameter beberapa kali:

curl -H "Accept-Charset: utf-8" -H "Content-Type: application/x-www-form-urlencoded" http://www.some-domain.com
Mads Mobæk
sumber
Bagaimana jika tajuk berisi "?
Freewind
2
@ Freewind membungkus nilainya dengan tanda kutip tunggal, bukan ganda, atau menghindarinya. Hal yang sama selalu Anda lakukan dalam kasus itu.
Darth Egregious
47

Terkadang mengubah tajuk tidak cukup, beberapa situs juga memeriksa rujukan:

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'

Dalam contoh ini referer (-e atau --referer in curl) adalah 'localhost'.

DavidG
sumber
45

Untuk meneruskan beberapa header dalam permintaan curl, Anda cukup menambahkan tambahan -Hatau --headerke perintah curl Anda.

Contoh

//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

Melangkah Lebih Lanjut

Untuk bidang tajuk HTTP standar seperti Agen-Pengguna , Cookie , Host , sebenarnya ada cara lain untuk menyetelnya. Perintah curl menawarkan opsi yang ditentukan untuk mengatur bidang header ini:

  • -A (atau --user-agent): setel bidang "User-Agent".
  • -b (atau --cookie): setel bidang "Cookie".
  • -e (atau --referer): setel bidang "Perujuk".
  • -H (atau --header): setel bidang "Header"

Sebagai contoh, dua perintah berikut ini setara. Keduanya mengubah string "User-Agent" di header 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
Tyler Rafferty
sumber