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
InformationsquelleAutor Frank Ly | 2012-03-29



3 Replies
  1. 23

    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:

    curl -I http://localhost:3000/books/1 --header 'If-None-Match: "0f46357eafa5c719e8e3bf277a993e07"'
    
    • Il link precedente non compare note a meno che non si acquista un abbonamento per il loro podcast.
    • L’esempio fornito.
    • Nel mio caso l’errore non era allegando la etag hash tra virgolette. Questo esempio mi ha aiutato a sottolineare che.
  2. 12

    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.

    curl --dump-header header_dump www.google.no
    

    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:

     curl -I -v --header 'If-None-Match: "1d30-4c993ec28581d"' http://httpd.apache.org
    

    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:

    HTTP/1.1 304 Not Modified
    Date: Tue, 18 Sep 2012 11:02:17 GMT
    Server: Apache/2.4.1 (Unix) OpenSSL/1.0.0g
    ETag: "1d30-4c993ec28581d"
    
    • Per quanto riguarda i doppi apici: ETag valori che devono essere trasmessi al server esattamente come data dal server. Non aggiungere o rimuovere le virgolette. Nel tuo esempio il server ha dato un ETag con le virgolette, in modo che è esattamente ciò che deve essere passato al If-None-Match, che si può fare come questo: curl -I -v --header "If-None-Match: $(sed 's/Etag: \(.*\)/\1/p;d' /path/to/header_dump)" http://httpd.apache.org
    • Si può utilizzare una base più Sed espressione (no gruppi di cattura): curl --header "If-None-Match: $(sed -n '/^Etag: */{ s///; p ;}' /path/to/header_dump)" ...
    • Intestazioni utilizzare CRLF (\r\n) come interruzione di riga, in modo che il comando sed deve prendere in considerazione, questo è quello che io uso: sed -n 's/^ETag:\s*\(.*\)\r$/\1/p' altrimenti il CR è goint per essere inclusi nell’ETag e non andando a partita.
  3. 3

    Etag sono solo una intestazione di richiesta Http, proprio come qualsiasi altro dai riccioli punto di vista.

    Quindi si può semplicemente utilizzare:

    curl -v -H 'If-None-Match: 123456789' http:your.server.com/your/path/here  
    

    dove 123456789 è il valore dell’Etag è tornato dalla prima richiesta.

    • Questo è solo una parte della risposta. Etag non possono essere salvate per un uso successivo come per i biscotti.
    • Questo è vero, ma la domanda originale era di 2 parti di esso, e che è la risposta per la prima parte. Credo che dovrei aggiungere che la risposta alla seconda parte “anche in grado di cURL salvare il etag come si fa con COOKIEJAR?” è No.

Lascia un commento