web-dev-qa-db-fra.com

Comment puis-je faire une demande avec les paramètres GET et POST?

Voici un extrait des en-têtes HTTP Live, j'ai remplacé plusieurs valeurs pour l'anonymat.

POST blah/admin.php?module_id=1&action=update&id=129&pageNum=17&&eid=362 HTTP/1.1

Host: blah

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101027 Firefox/3.6.12

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 115

Connection: keep-alive

Referer: blah

Cookie: blah

Content-Type: multipart/form-data; boundary=---------------------------21278813472729408841849703914

Content-Length: 5110

-----------------------------21278813472729408841849703914

Content-Disposition: form-data; name="MAX_FILE_SIZE"



300000000

Cette requête a à la fois des valeurs GET et POST. Le script à l'autre extrémité est PHP et attend que certaines valeurs soient dans le GET et d'autres soient dans la poste.

Je sais comment émettre un GET

curl -G -d "key=val" "http://yadayadayada"

Et je comprends comment faire un POST

curl -d "key=val" "http://yadayadayada"
curl -F "key=val" "http://yadayadayada"

Mais comment mélanger les deux en une seule demande? Chaque tentative que j'ai faite jusqu'à présent s'est soldée par une erreur.

21
Fred

Les variables GET peuvent être incluses dans l'URL. Vous incluez simplement les variables GET dans la chaîne de requête. Par exemple, si vous vouliez envoyer une demande GET avec "username = fred" à www.example.com/index.php, vous enverriez une simple demande GET à "http://www.example.com/index.php ? username = fred ". Donc, pour répondre à votre question, utilisez simplement la méthode POST, mais demandez à l'URL de contenir vos données GET.

30
Samuel

Pour clarifier, GET et POST sont des méthodes de requête HTTP, pas des types de valeur.

  • Les variables GET sont appelées paramètres chaîne de requête . Ils font partie de l'URL et peuvent être inclus dans toute demande.
  • Les variables POST sont le contenu d'un corps de message encodé en url. Ceux-ci peuvent également être envoyés avec une demande PUT.

Par conséquent, si vous souhaitez envoyer les deux types de valeurs, envoyez les données POST comme d'habitude tout en écrivant explicitement votre chaîne de requête.

curl -d "key=val" "http://example.com?query_var=1"
10
Brad Koch