Les *bons* headers à renvoyer pour les transferts de fichier en SSL (compatibles avec IE6/7/8)

18 novembre, 2011

Si vous travaillez en SSL, vous vous êtes probablement déjà heurtés (ou vous allez y être tôt au tard) au problème du téléchargement de fichier à partir d’un navigateur IE.

En effet, si vous ne paramétrez pas correctement les en-têtes de votre réponse, vous risquez de voir apparaître le message d’erreur “Serveur non disponible”… en lieu et place du fichier attendu.

Pour vous éviter la prise de tête voilà les headers que je vous conseille d’utiliser (code php).

// ...
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"".$filename."\";");
header("Content-Transfer-Encoding:­ binary");
header("Content-Length: ".strlen($content));
echo $content;
exit;

Hello world!

15 octobre, 2007

Configuration requise :

  • php.5.3.2 (5.3.3 tant qu’à faire)
  • Module requis / recommandé : php_apc, pdo + drivers, mbstring

Le mieux est de récupérer la sandbox de symfony et de tester votre configuration avec l’adresse http://localhost/sandbox/web/check.php

Maintenant que votre conf est d’aplomb et que la sandbox fonctionne, on va tout casser :) Pour ça on récupère la source up to date de symfony à partir du repo svn.
On remplace alors le répertoire “Symfony” présent dans vendor/Symfony/src par celui du svn.

Comme vous vous en doutez il va falloir quelques changements car tout à l’air de changer très vite, et il y a pas mal de refactoring.
Première constatation : plus de répertoire “foundation”, qui a plus ou moins été remplacé par “framework”, il va donc falloir faire le refactoring à la main, notamment dans VapKernel et VapBundle. Aidez-vous des messages d’erreur pour remplacer les références de “foundation” vers “framework”, et notez que tous les “bundle” sont maintenant dans le répertoire… “bundle”.

“registerContainerConfiguration()” qui est une fonction abstract de Kernel prend maintenant en paramètre LoaderInterface $loader. Il faut donc remplacer son implémentation par la suivante :

use Symfony\Components\DependencyInjection\Loader\LoaderInterface;
public function registerContainerConfiguration(LoaderInterface $loader)
{
return $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
}

**WORK IN PROGRESS**


Suivre

Get every new post delivered to your Inbox.