web-dev-qa-db-fra.com

Caractères spéciaux comme @ et & in cURL POST Les données

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.

43

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
52
Bernhard Heijstek

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

32
Biagio Arobba

Double citation ("") toute la URL. Cela fonctionne. 

curl "http://www.mysite.com?name=john&passwd=@31&3*J"
13

Essaye ça:

export CURLNAME="john:@31&3*J"
curl -d -u "${CURLNAME}" https://www.example.com
3
AGOUDJIL Massinissa

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
2
user3650655

J'ai fait ça 

~]$ export A=g

~]$ export B=!

~]$ export C=nger


   curl http://<>USERNAME<>1:$A$B$C@<>URL<>/<>PATH<>/
0
Lordlebu