2015-07-08 19 views
10

Curl theo mặc định sẽ thêm tiêu đề như Content-type và User-agent. Thông thường đó là một điều tốt nhưng tôi đang cố gắng kiểm tra những gì máy chủ của chúng tôi làm khi các tiêu đề bị thiếu. Vấn đề của tôi là với tiêu đề kiểu nội dung. Nếu nó bị thiếu, máy chủ chính xác giả sử người dùng gửi json. Tuy nhiên, curl thực sự thêm tiêu đề bị thiếu và không chính xác giả định rằng nội dung tôi đang đăng ứng dụng/x-www-form-urlencoded. Nó cũng gửi tiêu đề Chấp nhận là /. Tôi cho rằng đó là hành vi mặc định tốt đẹp nhưng về cơ bản tôi muốn nó không gửi tiêu đề tôi đã không chỉ định. Có một lựa chọn cho điều đó không?Làm cách nào để xóa các tiêu đề mặc định cuộn tròn theo mặc định

curl -v -X POST 'https://domain.com' -d '{...}' 

> User-Agent: curl/7.37.1 
> Host: domain.com 
> Accept: */* 
> Content-Length: 299 
> Content-Type: application/x-www-form-urlencoded 

Trả lời

17

Sử dụng -H cờ với tiêu đề bạn muốn loại bỏ và không có nội dung sau :

-H, --header LINE Custom header to pass to server (H) 

mẫu

-H 'User-Agent:' 

này sẽ thực hiện yêu cầu mà không các User-Agent tiêu đề (thay vì gửi nó với một giá trị trống)

+1

Để xóa tiêu đề proxy, thay thế -H bằng --proxy-header, ví dụ: '--proxy-header" Proxy-Connection: "' –

+0

Sử dụng vỏ Windows tiêu chuẩn ('cmd.exe') Tôi phải thay thế dấu nháy đơn bằng dấu ngoặc kép (hoặc loại bỏ chúng hoàn toàn). – MrWhite

+0

'-H 'Tác nhân người dùng:'' xóa tiêu đề như mong đợi (không có tiêu đề và không có giá trị nào được gửi) nhưng hãy cẩn thận với '-H 'Content-Type:'' mà ** sẽ gửi tiêu đề có giá trị rỗng ** . Đó là hành vi khác nhau lạ của lệnh curl. – mikep

2

Có vẻ như curl gửi 3 tiêu đề. Để thực hiện yêu cầu không có chúng, bạn có thể làm:

curl 172.20.11.100:8080/healthz -v -H 'User-Agent:' -H 'Accept:' -H 'Host:' 

+1 to @cmlndz answer khi giải thích cách xóa một tiêu đề.

Bạn có thể kiểm tra xem tiêu đề nào thực sự được gửi bằng cách thêm tùy chọn -v như được hiển thị ở trên.

Các vấn đề liên quan