# curl > Transfers data from or to a server. > Supports most protocols, including HTTP, HTTPS, FTP, SCP, etc. > More information: . - Make an HTTP GET request and dump the contents in `stdout`: `curl {{https://example.com}}` - Make an HTTP GET request, fo[L]low any `3xx` redirects, and [D]ump the reply headers and contents to `stdout`: `curl --location --dump-header - {{https://example.com}}` - Download a file, saving the [O]utput under the filename indicated by the URL: `curl --remote-name {{https://example.com/filename.zip}}` - Send form-encoded [d]ata (POST request of type `application/x-www-form-urlencoded`). Use `--data @file_name` or `--data @'-'` to read from `stdin`: `curl -X POST --data {{'name=bob'}} {{http://example.com/form}}` - Send a request with an extra header, using a custom HTTP method and over a pro[x]y (such as BurpSuite), ignoring insecure self-signed certificates: `curl -k --proxy {{http://127.0.0.1:8080}} --header {{'Authorization: Bearer token'}} --request {{GET|PUT|POST|DELETE|PATCH|...}} {{https://example.com}}` - Send data in JSON format, specifying the appropriate Content-Type [H]eader: `curl --data {{'{"name":"bob"}'}} --header {{'Content-Type: application/json'}} {{http://example.com/users/1234}}` - Pass client certificate and key for a resource, skipping certificate validation: `curl --cert {{client.pem}} --key {{key.pem}} --insecure {{https://example.com}}` - Resolve a hostname to a custom IP address, with [v]erbose output (similar to editing the `/etc/hosts` file for custom DNS resolution): `curl --verbose --resolve {{example.com}}:{{80}}:{{127.0.0.1}} {{http://example.com}}`