It can be cumbersome to type many different header names and values when composing a cURL command.
We can read all of the headers sent with a request from a file using the syntax below.
NOTE: make sure to have curl version 7.55.0 or higher.
To check:
$ curl --version
To cURL with headers read from a file:
$ curl -H @headers_file.txt http://somesite.com
Here is an example file:
headers_file.txt:
Accept: application/json Content-type: application/json
We can confirm the headers are sent correctly using verbose mode (-v).
$ curl -H @headers_file.txt http://somesite.com -v
As another test, We can see exactly what is sent to a remote server by first receiving the request locally with netcat. In a terminal, open:
$ nc -l 9090
Then launch the request in a second terminal:
$ curl -H @headers_file.txt http://localhost:9090
In the terminal listening with netcat, we should receive a request with the headers specified in the file:
GET / HTTP/1.1 Host: localhost:9090 User-Agent: curl/7.77.0 Accept: application/json Content-type: application/json
Note that default values for headers will be overridden.