AGGIORNAMENTO: Sembra che il problema principale con le immagini non caricate sia derivato dal modo in cui il plugin / estensione HTTPS Everywhere di EFF ha gestito alcuni URL di Tumblr. Lo sviluppatore è stato informato e una soluzione sembra essere in atto . Questa risposta sostanzialmente interrompe il lavoro investigativo svolto per scoprire il problema come indicato dalla domanda iniziale e potrebbe rivelarsi utile per un ulteriore debug / diagnosi se in futuro dovesse apparire un problema simile.
EDIT: il contenuto più ampio sulla sanguisuga delle immagini sembra non valido. Quindi aggiungerò una nuova idea in alto e lasceremo le informazioni sulla sanguisuga in basso nel caso in cui sia utile a qualcuno.
Idee CDN Amazon CloudFront
Bene, usando gli URL che hai fornito, così come alcune delle mie esperienze nel mondo reale con le configurazioni CDN di Amazon CloudFront, penso di aver scoperto qualcosa. Sembra che Amazon CloudFront CDN config sia soffocato per qualche motivo. Ecco perché penso che sia così.
Prendiamo questo URL di esempio:
http://36.media.tumblr.com/d685b02fdf2d3f167c22d9a97e27e87a/tumblr_nfpq5qPZ4v1tognpro1_1280.png
Ora corriamo curl -I
per ottenere informazioni di intestazione su quel file:
curl -I http://36.media.tumblr.com/d685b02fdf2d3f167c22d9a97e27e87a/tumblr_nfpq5qPZ4v1tognpro1_1280.png
L'output per questo sarebbe qualcosa del genere:
HTTP/1.1 200 OK
Content-Type: image/png
Content-Length: 782141
Connection: keep-alive
Accept-Ranges: bytes
Cache-Control: max-age=1209600
Date: Thu, 05 Mar 2015 02:15:44 GMT
Server: nginx
X-Cache: Miss from cloudfront
Via: 1.1 7e54fc06cd70e4752fe050bbe5c130be.cloudfront.net (CloudFront)
X-Amz-Cf-Id: QyIUyzfaJJN3PU_xWkW0P-D2kjg_1cVenKzFAoY2PubgZQlBHWorZQ==
Ora le cose a cui prestare attenzione qui sono le intestazioni Date
(la data e l'ora del file sull'endpoint CloudFront) e X-Cache
(stato di consegna del contenuto Amazon). Il comportamento tipico su Amazon CloudFront è che il primo accesso trasmetterà una "Miss da cloudfront" e quindi se ne fai curl -I
subito un altro dopo dovrebbe esserci un Hit from cloudfront
.
Ma non è quello che ho visto proprio ora. Ecco una ripartizione dello stato Date
e X-Cache
di un gruppo di accessi che ho effettuato:
Date: Thu, 05 Mar 2015 02:19:37 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:39 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:44 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Hit from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Hit from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Hit from cloudfront
Il motivo per cui ci sono più elementi con gli stessi dati esatti Hit from cloudfront
vicini alla fine è perché questo è ciò che accade su un CDN: se l'endpoint del CDN ha il file, allora è Date
correlato alla data di creazione / modifica effettiva del file che l'endpoint ha.
Notate che i primi quattro accessi sono distanti pochi secondi, con date / orari diversi e tutti sono Miss from cloudfront
, giusto? Ciò significa che l'endpoint della CDN sta semplicemente facendo eco che si è verificato un tentativo di accedere a quel file in quel momento e tutti i tentativi sono stati falliti.
Quindi la mia valutazione da parte della poltrona è che i sistemi di Tumblr non stanno al passo con la CDN di Amazon CloudFront o che la CDN di Amazon CloudFront non sta al passo con Tumblr. Ma in qualche modo, le cose vanno male sul loro lato server. E poiché si tratta di una CDN, qualcuno che accede ai file in una posizione potrebbe non notare un problema mentre qualcun altro in un'altra posizione avrebbe problemi a visualizzare l'immagine.
Il che è tutto da dire, non credo che questo possa essere chiarito facilmente sul lato client.
EDIT: Quindi il poster originale ha aggiunto alcuni nuovi URL, e questo indica ancora un problema sul lato server, ma volevo solo pubblicare i dettagli per il record.
EdgeCast & Highwinds Idee CDN
Quindi il poster originale ha aggiunto ulteriori dettagli, quindi qui ci sono più dettagli basati sul post del blog che viene utilizzato come esempio:
http://claystorks.tumblr.com/post/112741831192/soulmister-claystorks-windspeare-explain
E questi URL di immagini sono forniti come esempi di URL in quel post:
https://gs1.wac.edgecastcdn.net/8019B6/data.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_500.png
https://gs1.wac.edgecastcdn.net/8019B6/data.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_1280.png
E quei due URL di immagini falliscono davvero. Ma dalla mia parte, guardando il codice soure originale del post sul blog di Brooklyn, New York, USA, non vedo quegli gs1.wac.edgecastcdn.net
URL EdgeCast ( ). Piuttosto, questi sono gli URL che sto vedendo:
http://41.media.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_500.png
http://41.media.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_1280.png
Quindi il mio primo pensiero è perché il poster originale vede EdgeCast ( gs1.wac.edgecastcdn.net
). Ma poi se faccio un traceroute al 41.media.tumblr.com
vedo che è un server gestito da Highwinds (!?!?). Al contrario, gli URL iniziali trasmessi dall'utente originale utilizzano il 36.media.tumblr.com
nome host e puoi vedere che sono gestiti dai server CDN di Amazon CloudFront.
Il che è tutto da dire — che ho detto prima — tutto questo sembra essere un problema lato server con Tumblr e la loro gestione della CDN. Ma dalla mia parte - a Brooklyn, New York, Stati Uniti - vedo chiaramente i contenuti distribuiti come previsto dai server CDN di Highwinds e dai server CDN di Amazon CloudFront. Da dove provengono questi URL EdgeCast o come / perché falliscono è fuori dal controllo di chiunque sul lato client. Questo sarebbe sicuramente qualcosa su cui contattare il personale tecnico di Tumblr perché non c'è modo che un utente finale desktop possa risolverlo.
Idee per le sanguisughe di immagini
Potrebbe non essere più pertinente, ma qui per riferimento.
Mi stai dicendo che mi dai un indizio:
L'uso wget
dei collegamenti diretti delle immagini funziona.
Molti siti hanno regole in atto - di solito impostate tramite Apache - che impediscono il sanguinamento delle immagini. Maggiori dettagli su come funzionano tali regole sono forniti qui e sono riassunti come segue:
Utilizzando .htaccess, puoi impedire il collegamento a caldo sul tuo server, quindi coloro che tentano di collegarsi a un'immagine o un file CSS sul tuo sito, ad esempio, vengono bloccati (richiesta non riuscita, come un'immagine interrotta) o offerti un contenuto diverso ( cioè: un'immagine di un uomo arrabbiato).
In base alla tua descrizione, e al fatto che puoi accedere alle immagini tramite, wget
mi spinge a credere che le immagini con cui stai riscontrando problemi non sono ospitate su Tumblr dagli utenti, ma piuttosto immagini che sono collocate su un blog Tumblr ma effettivamente ospitate su un altro luogo.
Quando vengono messe in atto procedure standard di sanguisuga delle immagini, la visualizzazione di un'immagine incorporata su un sito ospitato su un altro sito, che blocca le sanguisughe, si tradurrebbe in un collegamento di immagine interrotto o forse in un "Stop Leeching!" immagine restituita. Questo perché le regole anti-sanguisuga di base, come quelle in quella pagina di esempio, controllano i referrer di immagini per assicurarsi che la pagina che richiede l'immagine corrisponda al dominio che ospita l'immagine.
Quindi quando si accede all'immagine tramite wget
si accede direttamente all'immagine. Quindi le regole di sanguisuga delle immagini non entrerebbero in gioco. In questo modo è possibile ottenere l'immagine tramite wget
ma non quando è incorporata in un'altra pagina.