Curl: ajout d'astuces et de précisions
This commit is contained in:
parent
a06a0cf22d
commit
046b049030
102
HowtocURL.md
102
HowtocURL.md
|
@ -10,45 +10,53 @@ categories: tips
|
|||
|
||||
## Utilisation de base
|
||||
|
||||
Récupérer et afficher – sur la sortie standard – le contenu d'une ressource :
|
||||
|
||||
~~~
|
||||
$ curl https://www.example.com
|
||||
~~~
|
||||
|
||||
Enregistrer en local :
|
||||
Enregistrer la ressource dans un fichier portant le même nom (`-O ou `--remote-name`) :
|
||||
|
||||
~~~
|
||||
$ curl -O https://www.example.com/
|
||||
$ curl -O https://www.example.com/page.html
|
||||
~~~
|
||||
|
||||
Ignorer le certificat :
|
||||
Ne pas vérifier la validité du certificat (`-k` ou `--insecure`) :
|
||||
|
||||
~~~
|
||||
$ curl -k https://www.example.com/
|
||||
~~~
|
||||
|
||||
Suivre les redirect 301 :
|
||||
Suivre les redirections (`-L` ou `--location`) :
|
||||
|
||||
~~~
|
||||
$ curl -L http://www.example.com
|
||||
~~~
|
||||
|
||||
Spécifier la méthode (par défaut GET) POST/PUT/DELETE :
|
||||
Spécifier la méthode (par défaut GET) POST/PUT/DELETE (`-X` ou `--request`) :
|
||||
|
||||
~~~
|
||||
$ curl -X POST https://www.example.com
|
||||
~~~
|
||||
|
||||
Spécifier un en-tête HTTP (`-H` ou `--header`) :
|
||||
|
||||
~~~
|
||||
$ curl http://www.example.com -H 'Accept: text/plain'
|
||||
~~~
|
||||
|
||||
## Outrepasser le nom de domaine
|
||||
|
||||
Avec cette astuce, inutile de modifier `/etc/hosts`, ce qui est très pratique.
|
||||
|
||||
En HTTP classique :
|
||||
Avec un en-tête `Host` forcé :
|
||||
|
||||
~~~
|
||||
$ curl http://192.0.2.1:8080/foo/bar -H 'Host: www.example.com'
|
||||
~~~
|
||||
|
||||
En HTTPS (SNI) :
|
||||
Avec une résolution forcée (`--resolve`, à partir de 7.21.3) :
|
||||
|
||||
~~~
|
||||
$ curl --resolve www.example.com:443:192.0.2.1 https://www.example.com/foo/bar
|
||||
|
@ -56,6 +64,8 @@ $ curl --resolve www.example.com:443:192.0.2.1 https://www.example.com/foo/bar
|
|||
|
||||
## Authentification
|
||||
|
||||
Option `-u` ou `--user` :
|
||||
|
||||
~~~
|
||||
$ curl -u username:password https://www.example.com
|
||||
~~~
|
||||
|
@ -90,26 +100,96 @@ $ curl -u ftpuser:ftppass -T fichier ftp://ftp.example.com/
|
|||
$ curl -u ftpuser:ftppass -T "{fichier1,fichier2}" ftp://ftp.example.com/
|
||||
~~~
|
||||
|
||||
## API REST
|
||||
|
||||
Pour tester des interactions avec une API REST, on peut facilement envoyer des structures de données.
|
||||
|
||||
En direct :
|
||||
|
||||
~~~
|
||||
$ curl -XPUT 'http://localhost:9200/_snapshot/foo' -d '{
|
||||
"type": "fs",
|
||||
"settings": {
|
||||
"location": "/home/backup-elasticsearch",
|
||||
"compress": true
|
||||
}
|
||||
}'
|
||||
~~~
|
||||
|
||||
Via un fichier :
|
||||
|
||||
~~~
|
||||
$ curl -XPUT 'http://localhost:9200/_snapshot/foo' -d @/path/to/file
|
||||
~~~
|
||||
|
||||
## Divers
|
||||
|
||||
Afficher uniquement le header :
|
||||
### Affichage de la réponse
|
||||
|
||||
Afficher uniquement les en-têtes (`-I` ou `--head`) :
|
||||
|
||||
~~~
|
||||
$ curl -I www.example.com
|
||||
~~~
|
||||
|
||||
Afficher le header et le contenu :
|
||||
Afficher les en-têtes et le contenu (`-i` ou `--include`) :
|
||||
|
||||
~~~
|
||||
$ curl -i www.example.com
|
||||
~~~
|
||||
|
||||
Obtenir le contenu gzipé :
|
||||
### En-têtes de requête et de réponse
|
||||
|
||||
À plaver dans un script, pour faciliter son utilisation.
|
||||
|
||||
*Note*: Ce script permet de ne pas modifier le verbe HTTP employé. En effet, une requête "HEAD" peut-être traitée différemment d'un "GET" par certains services. Il peut être combiné avec toutes les options de Curl.
|
||||
|
||||
|
||||
~~~{.bash}
|
||||
#!/bin/sh
|
||||
#
|
||||
# https://github.com/rtomayko/dotfiles/blob/rtomayko/bin/headers
|
||||
|
||||
curl -sv "$@" 2>&1 >/dev/null |
|
||||
grep -v "^\*" |
|
||||
grep -v "^}" |
|
||||
cut -c3-
|
||||
~~~
|
||||
|
||||
~~~
|
||||
$ ~/bin/headers http://www.example.com
|
||||
GET / HTTP/1.1
|
||||
User-Agent: curl/7.38.0
|
||||
Host: www.example.com
|
||||
Accept: */*
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
Accept-Ranges: bytes
|
||||
Cache-Control: max-age=604800
|
||||
Content-Type: text/html
|
||||
Date: Mon, 27 Mar 2017 12:39:35 GMT
|
||||
Etag: "359670651"
|
||||
Expires: Mon, 03 Apr 2017 12:39:35 GMT
|
||||
Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT
|
||||
Server: ECS (lga/13D5)
|
||||
Vary: Accept-Encoding
|
||||
X-Cache: HIT
|
||||
Content-Length: 1270
|
||||
|
||||
[data not shown]
|
||||
~~~
|
||||
|
||||
### Version compressée
|
||||
|
||||
Obtenir le contenu gzipé (avec un en-tête forcé) :
|
||||
|
||||
~~~
|
||||
$ curl www.example.com -H 'Accept-Encoding:gzip, deflate'
|
||||
~~~
|
||||
|
||||
Récupérer le contenu seulement si celui-ci a été modifié après le 17 Mers 2017 :
|
||||
### Contrainte de date de modification de la ressource
|
||||
|
||||
Récupérer le contenu seulement si celui-ci a été modifié après le 17 Mars 2017 (`-I` ou `--head`) :
|
||||
|
||||
~~~
|
||||
$ curl -z 17-Mar-17 www.example.com
|
||||
|
|
Loading…
Reference in a new issue