Làm cách nào tôi có thể đặt tiêu đề yêu cầu cho curl?


196

Làm thế nào tôi có thể vượt qua nhiều giá trị trong tiêu đề cho một curlyêu cầu?


Bạn có một ví dụ bạn đang sử dụng ngay bây giờ mà bạn có thể chỉ cho chúng tôi không?
Ryan Bigg

4
thêm nhiều cờ -H. Ví dụcurl -H "Content-Type : application/json" -H "Authorization : Token token='yourtokenhere'"
gsumk

Câu trả lời:


241

Chỉ cần sử dụng -Htham số nhiều lần:

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

Điều gì nếu tiêu đề chứa "?
Freewind

2
@Freewind bọc giá trị bằng một trích dẫn thay vì gấp đôi hoặc thoát nó. Điều tương tự bạn luôn làm trong trường hợp đó.
Darth Egregious

47

Đôi khi thay đổi tiêu đề là không đủ, một số trang web cũng kiểm tra người giới thiệu:

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'

Trong ví dụ này, tham chiếu (-e hoặc --referer in curl) là 'localhost'.


44

Để vượt qua nhiều tiêu đề trong một yêu cầu cuộn tròn, bạn chỉ cần thêm -Hhoặc--header vào lệnh curl của bạn.

Thí dụ

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

Đi xa hơn

Đối với các trường tiêu đề HTTP tiêu chuẩn như Tác nhân người dùng , Cookie , Máy chủ lưu trữ , thực sự có một cách khác để đặt chúng. Lệnh curl cung cấp các tùy chọn được chỉ định để đặt các trường tiêu đề này:

  • -A (hoặc --user-agent): đặt trường "Tác nhân người dùng".
  • -b (hoặc --cookie): đặt trường "Cookie".
  • -e (hoặc --referer): đặt trường "Người giới thiệu".
  • -H (hoặc --header): đặt trường "Tiêu đề"

Ví dụ, hai lệnh sau là tương đương. Cả hai đều thay đổi chuỗi "Tác nhân người dùng" trong tiêu đề 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.