Come ottenere i metadati di un file http?
-
09-06-2019 - |
Domanda
Come ottenere la data di creazione o la dimensione del file, ad esempio questo Hello.jpg su http://www.mywebsite.com/now/Hello.jpg(nota:Questo URL non esiste)?Lo scopo di questa domanda è fare in modo che la mia applicazione scarichi nuovamente i file da qualsiasi sito Web quando rileva che il sito Web dispone di una versione aggiornata dei file e che i file nella mia cartella locale non sono aggiornati.Qualche idea?
Soluzione
Se usi la richiesta HEAD invierà le intestazioni per la risorsa, lì puoi controllare le intestazioni di controllo della cache che ti diranno se la risorsa è stata modificata, l'ora dell'ultima modifica, la dimensione (lunghezza del contenuto) e la data.
$ telnet www.google.com 80
Trying 216.239.59.103...
Connected to www.l.google.com.
Escape character is '^]'.
HEAD /intl/en_ALL/images/logo.gif HTTP/1.0
HTTP/1.0 200 OK
Content-Type: image/gif
Last-Modified: Wed, 07 Jun 2006 19:38:24 GMT
Expires: Sun, 17 Jan 2038 19:14:07 GMT
Cache-Control: public
Date: Tue, 16 Sep 2008 09:45:42 GMT
Server: gws
Content-Length: 8558
Connection: Close
Connection closed by foreign host.
Tieni presente che probabilmente dovrai decorare questo approccio semplice e semplice con molte euristiche a seconda della follia dell'amministratore di ciascun server web, poiché ognuno può inviare qualunque intestazione preferisca.Se non forniscono intestazioni di memorizzazione nella cache (Last-Modified, Expires, Cache-Control) né Content-Length né etag, ti ritroverai costretto a riscaricarlo per testarlo.
Altri suggerimenti
Il server web potrebbe inviare un'intestazione last-modified e/o etag a tale scopo.E potresti inviare un'intestazione if-modified-since nella tua richiesta.
Vedere http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlparagrafi 14.19, 14.25 e 14.29