Comment inclure des caractères spéciaux tels que @ et & dans les données cURL POST? J'essaie de passer un nom et un mot de passe comme:
curl -d name=john passwd=@31&3*J https://www.mysite.com
Cela poserait des problèmes, car @
est utilisé pour charger des fichiers et &
pour spécifier plus d'une clé/valeur. Y a-t-il un moyen de sortir de ces personnages? \@
et \&
ne semblent pas fonctionner.
cURL> 7.18.0 a une option --data-urlencode
qui résout ce problème. Grâce à cela, je peux simplement envoyer une demande POST en tant que
curl -d name=john --data-urlencode passwd=@31&3*J https://www.mysite.com
Que diriez-vous d'utiliser les codes d'entité ...
@ = %40
& = %26
Donc, vous auriez:
curl -d 'name=john&passwd=%4031%263*J' https://www.mysite.com
Double citation ("") toute la URL
. Cela fonctionne.
curl "http://www.mysite.com?name=john&passwd=@31&3*J"
Essaye ça:
export CURLNAME="john:@31&3*J"
curl -d -u "${CURLNAME}" https://www.example.com
Je viens de trouver une autre solution qui a fonctionné pour moi. Vous pouvez utiliser le signe '\' avant votre numéro spécial.
passwd=\@31\&3*J
J'ai fait ça
~]$ export A=g
~]$ export B=!
~]$ export C=nger
curl http://<>USERNAME<>1:$A$B$C@<>URL<>/<>PATH<>/