IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Discussion :

[HTTP] Cache-control et Last-Modified ou ETag


Sujet :

Développement

  1. #1
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut [HTTP] Cache-control et Last-Modified ou ETag
    Bonjour,

    J'aimerais un éclaircicement sur l'usage du protocol HTTP, concernant les téléchargements. Il n'existe pas de support direct HTTP pour exprimer explicitement qu'un transfert est un téléchargement, mais la norme HTTP/1.1 spécifie que si un entête de réponse indique « Content-Disposition: attachment; ... » conjointement à un « Content-Type: application/octet-stream » alors le client HTTP est supposé l'interpréter comme étant une suggestion que le contenu ne doit pas être affiché, et qu'il doit réagir avec une boite de dialogue « save as ... » (il est également fortement conseillé que le client ignore l'éventuelle spécification de chemin contenu dans filename, pour ne conserver que le nom de fichier).

    J'ai fait des essais, et oh miracle, cela fonctionne, même avec un fichier : IE propose d'enregistrer le fichier et ne l'affiche pas.

    Mais j'ai constaté que cela ne fonctionne qu'avec la directive « Cache-Control: no-cache ». Il est en effet suggéré que cette directive peut être employée dans ces cas là (à moins que je n'ai lu ça ailleur que dans la spécification). En tous, et à moins que je n'ai fait une erreur dans les tests, ça n'a pas fonctionné avec un entête de réponse comprennant « Last-Modified » et « ETag ».

    Exemple:
    Code HTTP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Cache-Control: no-cache 
    Content-Disposition: attachment; filename="xxxx" 
    Content-Encoding: binary 
    Content-Length: xxxx
    Content-Type: application/octet-stream

    Ce qui me chatouille mal, c'est que j'aurais aimé des téléchargements avec Last-Modified et ETag, parce que je pense que c'est mieux pour les robots.

    Est-ce que quelqu'un(e) qui connait bien le protocol HTTP peut m'éclairer sur ce point ? (bien que dans ce cas, cela dépend aussi de l'interprétation du client).

    J'ai essayé avec no-cache et ETag/Last-Modified en mêmes-temps, mais ça ne fonctionne pas : ce qui est normal, puisque les deux directives sont contradictoires.

    P.S. Avis à la modération : je ne suis certain d'avoir posté au bon endroit. Comme cela concerne un protocole, j'ai pensé que c'était le bon endroit... peut-être. Mais s'il-vous plait je vous en prie, essayez seulement de ne pas le déplacer dans PHP : il ne faut pas tout confondre.
    ------------------------------------------------------------
    Sur le web, c'est la liberté qui est gratuite, mais bien évidement pas la consomation ... et encore moins la consomation à outrance
    ------------------------------------------------------------
    Language shapes the way we think, and determines what we can think about [ B. Lee Whorf ] ... mais ce n'est pas tout à fait vrai à 100%...
    ------------------------------------------------------------
    Pascal (FreePascal?) - Ada (Gnat-3.15p)
    XSLT (XSLTProc) - CGI binaires (Ada/C) [ Clavier Arabe ]
    ------------------------------------------------------------

  2. #2
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut
    Un supplément de précision sur le teste avec Last-Modified/ETag :
    Si la réponse comprend un champ Last-Modified ou ETag, Internet Explorer ouvre la boite de dialogue de téléchargement.. tout va bien.

    Mais comme il n'y a pas de Cache-Control:no-cache alors Internet Explorer place le document également en cache, et au prochain accés à l'URL, il affiche le contenu du fichier, au lieu d'ouvrir la boite de dialogue « enregistrer sous ... ».

    Le problème est donc en deux temps, et c'est un problème d'interprétation de la réponse.

    Maintenant, je ne sais pas comment les robots (les crawlers) interpréte Cache-Control (mais cette question sort peut-être un peu du cadre du forum).

    Annecdote 1 : si dans le boite « save as ... » on clique sur « ouvrir », alors le contenu du fichier apparaît vide.

    Annecdote 2 : la plupart des codes sur le web qui présentent une manière de forcer un téléchargement, sont éronnés, et ne sont pas conformes à HTTP. Certains emploient des champs inexistants en HTTP (comme Content-Transfert-Encoding), et certain même ajoute un double saut de ligne au beau milieux de la réponse!

    Ce qui vous est donné ici est 100% conforme est 100% fonctionnel
    ------------------------------------------------------------
    Sur le web, c'est la liberté qui est gratuite, mais bien évidement pas la consomation ... et encore moins la consomation à outrance
    ------------------------------------------------------------
    Language shapes the way we think, and determines what we can think about [ B. Lee Whorf ] ... mais ce n'est pas tout à fait vrai à 100%...
    ------------------------------------------------------------
    Pascal (FreePascal?) - Ada (Gnat-3.15p)
    XSLT (XSLTProc) - CGI binaires (Ada/C) [ Clavier Arabe ]
    ------------------------------------------------------------

Discussions similaires

  1. Apache et Cache-Control
    Par Nayas dans le forum Apache
    Réponses: 1
    Dernier message: 22/06/2008, 00h19
  2. Réponses: 0
    Dernier message: 10/12/2007, 17h42
  3. [HTTP] Cache-Control, navigateurs et bouton "Précédent"
    Par adiGuba dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 21/09/2007, 17h53
  4. [Dates] Header 304 Last-Modified
    Par Foodstyling dans le forum Langage
    Réponses: 2
    Dernier message: 30/09/2006, 22h28
  5. Réponses: 2
    Dernier message: 01/07/2003, 19h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo