Création de sites web en éco-conception

10/02/2016 Gérer le access-control-allow-origin sur un mutualisé

Problématique : les polices de caractères sont hébergées sur un autre sous-domaine que celui de la page source.

Les navigateurs refusent de les charger, car la "cross-origin" n'est pas autorisée.

Solution : envoyer un header "Access-Control-Allow-Origin" via htaccess.

Comment faire lorsque le serveur Apache de son hébergement mutualisé n'a pas chargé le module mod_headers ?

Il suffit de l'envoyer en PHP.

D'abord on intercepte tous les appels de fichiers de polices :

RewriteRule ^icomoon\.([a-z]+) index.php?ext=$1 [L]

Puis on sert les fichiers correspondants accompagnés d'une en-tête :

<?php if (!isset($_GET["ext"])) { exit; } switch ($_GET["ext"]) { case "svg" : header('Content-type: image/svg+xml'); break; case "woff" : header('Content-type: application/font-woff'); break; case "ttf" : header('Content-type: application/font-ttf'); break; case "eot" : header('Content-type: application/vnd.ms-fontobject'); break; default : exit; } header("Access-Control-Allow-Origin: *"); die(file_get_contents("icomoon." . $_GET["ext"]));

Notez qu'il existe des techniques plus rapides pour servir un fichier tel quel, par exemple x-sendfile ; encore faut-il que le serveur soit équipé pour…

Commentaires

Ajouter un commentaire :