2012-06-05 15 views
5

Qualcuno sa come viene generato GagHag ETag quando si accede ai contenuti non elaborati?File raw GitHub - Algoritmo Etag

Per quanto posso dire questo non è MD5, SHA1 o qualsiasi variante SHA comune;

intestazioni Esempio http:

HTTP/1.1 200 OK 
Server: nginx/1.0.13 
Date: Tue, 05 Jun 2012 19:46:08 GMT 
Content-Type: text/html; charset=utf-8 
Connection: keep-alive 
Status: 200 OK 
ETag: "aa1da178ae0a43e23ce49a6b8f474738" 

La lunghezza ETag è di 32 caratteri, suggerendo MD5, ma questo non corrisponde il checksum MD5 del file scaricato (scaricati usando ricciolo).

Sono consapevole che gli ETags devono essere considerati come identificativi opachi. Comunque, curioso.

+0

Questo è un po 'particolare, non è vero? –

+0

@dystroy Aha; Non sono riuscito a trovare alcuna informazione tramite Google o su github.com. Questo è, diciamo, uno sparo nell'oscurità. – Ishan

risposta

0

La mia ipotesi sarebbe che stiano usando il modulo nginx etag di magazzino.

https://github.com/mikewest/nginx-static-etags/blob/master/ngx_http_static_etags_module.c

+0

Grazie, ma niente da fare. Questo modulo genera ETags concatenando alcune informazioni dalla richiesta di Nginx, la dimensione del file (esadecimale) e il file mtime (hex). Stringa di formato C "% s_% X_% X". Per inciso, anche con la versione Nginx specificato nel README del progetto, qualcosa è rotto .. Questo è come l'ETag si presenta come: Etag:/redhat-release HTTP/1.1_newline_User-Agent_22_4FCFB809 Ecco percorso URI + versione del protocollo + _ \ n_ + parte dell'intestazione di una richiesta + dimensione del file esadecimale + file esadecimale mtime. – Ishan