2010-11-04 17 views
20

Ecco un estratto dagli header HTTP in tempo reale, ho sostituito diversi valori per l'anonimato.Come posso effettuare una richiesta con entrambi i parametri GET e POST?

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 

Questa richiesta ha entrambi i valori GET e POST. Lo script all'altra estremità di questo è PHP e si aspetta che certi valori siano nel GET e altri nel POST.

So come emettere un GET

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

e ho capito come fare un POST

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

ma come faccio a mescolare i due in una singola richiesta? Ogni tentativo che ho fatto finora è finito in un errore.

risposta

30

Le variabili GET possono essere incluse nell'URL. Devi solo includere le variabili GET nella stringa di query. Ad esempio, se si desidera inviare una richiesta GET con "username = fred" a www.example.com/index.php, si invierà una semplice richiesta GET a "http://www.example.com/index.php ? username = fred". Quindi per rispondere alla tua domanda, usa il metodo POST, ma l'URL contiene i dati GET.

+2

Cosa succede se il tuo param ha spazi come username = 'fred johnson'? – latvian

+5

@latvian Devi sfuggire allo spazio per rendere l'url completamente sicuro. Nel tuo caso sarebbe http://www.example.com/index.php?username=fred%20johnson. Leggi informazioni sulla codifica dell'URL qui: http://www.blooberry.com/indexdot/html/topics/urlencoding.htm – Samuel

9

Per chiarire, GET e POST sono metodi di richiesta HTTP, non tipi di valore.

  • Le variabili GET sono chiamate parametri query string. Fanno parte dell'URL e possono essere inclusi in qualsiasi richiesta.
  • Le variabili POST sono il contenuto di un corpo del messaggio urlencoded. Questi potrebbero anche essere inviati con una richiesta PUT.

Pertanto, se si desidera inviare entrambi i tipi di valori, inviare i dati POST normalmente durante la scrittura esplicita della stringa di query.

curl -d "key=val" "http://example.com?query_var=1" 
Problemi correlati