cURL e etag utilizzo?
come posso inviare un etag oltre cURL? può anche arricciare salvare il etag come si fa con COOKIEJAR?
dalle intestazioni vedo questo
mia richiesta GET
GET /Vpreviews/p/8b329b598fcdad4fd33432e78128da48f7219882.fll? e=1332973900&ri=4500&rs=75&h=bca0ce28998e637f27cf1d5c7042e7a0 HTTP/1.1
Host: veoh-139.vo.llnwd.net
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0.1) Gecko/20100101 Firefox/8.0.1
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
DNT: 1
Connection: keep-alive
risposta del server
HTTP/1.1 200 OK
Server: Veoh-1.5 (lighttpd-1.4.18)
Content-Type: video/x-flv
Accept-Ranges: bytes
Etag: "8b329b598fcdad4fd33432e78128da48f72198829640882"
User-Header: X-llnw-rate-limit: ri=4500, rs=98
Age: 162476
Date: Wed, 28 Mar 2012 22:06:41 GMT
Last-Modified: Sun, 01 Jan 2012 13:29:44 GMT
Expires: Mon, 27 Mar 2017 06:02:35 GMT
Content-Length: 9640882
Connection: keep-alive
Dare un’occhiata a questo Railscast. In mostra le note, è possibile vedere alcuni esempi di utilizzo di curl per afferrare una pagina con i cookie e gli Etag.
In pratica si passa con ‘If-None-Match’ intestazione:
Prima di tutto, Curl è solo un programma di utilità per l’esecuzione di richieste http. Non registrare automaticamente le intestazioni di risposta come il Cookie o il ETag intestazione.
Ma è possibile, per esempio, scrivere le intestazioni di un file utilizzando il
--dump-header
opzione ed estrarre il ricercato intestazione del file di dump e noi nel prossimo richiesta.Come per l’invio di ETag, sto cercando di indovinare che si desidera eseguire una richiesta GET condizionale. Che è, si vuole istruire il server (o in realtà l’applicazione) che sei interessato ad una risposta 200 OK se la risorsa è stata modificata dall’ultima richiesta.
Se quello è che cosa siete dopo, è possibile ottenere questo con l’aggiunta di If-None-Match: intestazione di richiesta:
Nota come l’intestazione di cui sopra, è avvolto da apici singoli, mentre il valore Etag è avvolto tra doppi apici. Non funzionerà a meno che non si fanno.
Se l’Etag partite, si dovrebbe ottenere una risposta 304 come questo:
curl -I -v --header "If-None-Match: $(sed 's/Etag: \(.*\)/\1/p;d' /path/to/header_dump)" http://httpd.apache.org
curl --header "If-None-Match: $(sed -n '/^Etag: */{ s///; p ;}' /path/to/header_dump)" ...
sed -n 's/^ETag:\s*\(.*\)\r$/\1/p'
altrimenti il CR è goint per essere inclusi nell’ETag e non andando a partita.Etag sono solo una intestazione di richiesta Http, proprio come qualsiasi altro dai riccioli punto di vista.
Quindi si può semplicemente utilizzare:
dove 123456789 è il valore dell’Etag è tornato dalla prima richiesta.