Paramètre Access-Control-Allow-Origin sur Cloudfront Objet mis en Cache
Des polices proposées par Cloudfront sont cassés dans Firefox en raison de la "mauvais URI ou cross-site l'accès non autorisé" de l'émission. Pour corriger cela, je comprends que j'ai besoin de définir le "Access-Control-Allow-Origin" à la tête d'un générique ou le domaine source.
Le problème que je rencontre est que Cloudfront ne semble pas accepter les en-têtes de l'origine.
Par exemple, ce qui suit est la liste des en-têtes que je reçois quand je ping mon serveur pour la police:
curl -I -s "https://mysite.com/wp-content/themes/my-theme/includes/fonts/ProximaNova-Reg-webfont.ttf"
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 29 Jan 2014 16:03:03 GMT
Content-Type: application/x-font-ttf
Content-Length: 44992
Last-Modified: Tue, 28 Jan 2014 22:21:41 GMT
Connection: keep-alive
ETag: "52e82d75-afc0"
Expires: Thu, 29 Jan 2015 16:03:03 GMT
Cache-Control: max-age=31536000
Access-Control-Allow-Origin: https://mysite.com
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: 3600
Accept-Ranges: bytes
Tout semble bon, avec cette réponse; cependant, lorsque je ping Cloudfront pour la même ressource, j'obtiens:
curl -I -s "https://ds6dj5kp03o39.cloudfront.net/wp-content/themes/my-theme/includes/fonts/ProximaNova-Reg-webfont.ttf"
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 44992
Connection: keep-alive
Date: Wed, 29 Jan 2014 16:22:30 GMT
Server: Apache/2.2.16 (Debian) mod_ssl/2.2.16 OpenSSL/0.9.8o
Last-Modified: Wed, 22 Jan 2014 02:44:45 GMT
ETag: "5d633-afc0-4f0861b87a140"
Accept-Ranges: bytes
Cache-Control: max-age=3600
Expires: Wed, 29 Jan 2014 17:22:30 GMT
X-Cache: Miss from cloudfront
Via: 1.1 850e11212c3f83bfb138469e9b3b7718.cloudfront.net (CloudFront)
X-Amz-Cf-Id: M4qkj9FwjdAUW91U4WeZzxEI0m7vOmiQvryS55WwoeU5Ks11IC71ig==
Il semble que toute l'origine les en-têtes sont totalement ignorés. Ma question est, comment puis-je obtenir Cloudfront pour accepter mon bien-têtes, en particulier la critique "Access-Control-Allow-Origin" en-tête?
Merci pour l'aide!
Ouais...ce pourrait être mon problème 😉 je pense que ce qui est censés à arriver, c'est que certains en-têtes que vous définissez sur votre serveur sont conservées par CloudFront. Ils seront évidemment remplacer un certain nombre d'entre eux, mais j'ai pensé qu'ils avaient persistent certains d'entre eux. Beaucoup de gens ont écrit des articles sur cette méthode, mais il ne fonctionne pas pour moi. Peut-être cette hypothèse est juste totalement faux.
Cela fonctionne: docs.aws.amazon.com/AmazonS3/latest/dev/cors.html ?
OriginalL'auteur tollmanz | 2014-01-29
Vous devez vous connecter pour publier un commentaire.
Si vous venez à une date ultérieure, et ont ce problème avec une coutume d'origine c'EST bien de servir le Access-Control-Allow-Origin-tête déjà, voici deux choses que j'ai vérifié /essayé:
n', essayez de les retirer.
les types de contenu pour woff et des fichiers ttf. C'était le moyen le plus rapide lien que j'ai
trouvé sur le sujet -
https://github.com/fontello/fontello/wiki/How-to-setup-server-to-serve-fonts
Apache
À droite types mime pour les fichiers de police, ajouter ces lignes de config:
Si vous ne pouvez pas modifier la configuration, créer
.htaccess
fichier dans le dossier avec votreprojet et ajouter des lignes.
Pour la SCRO-têtes ajouter le code ci-dessous:
Vous aurez besoin pour exécuter
service apache2 restart
une fois que vous faites ces changements et si vous recevez le message d'erreurInvalid command 'Header'
cela signifie que vous n'avez pas activé la mod_header module dans Apache qui vous pouvez faire aveca2enmod headers
nginx
Par défaut de nginx n'a pas de défaut des types mime pour les polices, et le mal mimy
type de
.eot
fichiers. Arrivés à dossier avec les configs et trouver où le mimeles types sont souillées. Généralement, c'est dans des mimes.fichier conf.
De recherche
.eot
et un string.Ajouter des chaînes ci-dessous:
Pour la SCRO en-têtes, ajouter quelque chose comme ceci à votre vhost config
OriginalL'auteur streetlogics
Ce que vous avez fait est juste, mais CloudFront met en cache les résultats, par conséquent, vous obtenez la vieille version mise en cache.
Vous pouvez les voir dans les en-têtes:
à partir de votre site:
de cloudfront:
Maintenant, comment le faire fonctionner à nouveau:
a) attendre l'objet d'expirer, puis demande à nouveau. CloudFront le mettre à jour alors.
b) d'Invalider l'objet(s) à l'aide de votre amazon aws console > cloudfront > distribution > Invalidations. Voir http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html pour plus de détails sur la façon d'utiliser cette
c) modifier le nom ou le démarrer à l'aide d'un versionnées nom pour le fichier, par exemple: ProximaNova-Reg-webfont_2.ttf
OriginalL'auteur Paulo Cunha
Dans sa configuration par défaut, CloudFront ne pas inspecter les en-têtes de cache ou de leurs valeurs. Un probable pour vous est que votre ressource est le premier à m'a demandé, sans une "Origine" de l'en-tête, et donc le S3 n'est pas de servir de la SCRO les en-têtes de réponse. La réponse est mis en cache et plus tard lorsque vous faites de la croix-origine de la demande, la réponse en cache est servi sans eux.
Vous pouvez configurer CloudFront à l'avant de l'Origine de l'en-tête de S3 et de mise en cache des réponses différentes pour différentes valeurs d'en-tête, ce qui entraînera CloudFront la mise en cache de la SCRO-têtes en cas de besoin. Voir http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-cors.
OriginalL'auteur Alex
Il y a une configuration explicite pour vos seaux à évaluer la Scro en-têtes de façon dynamique.
En essayant de mettre de la SCRO des en-têtes ou des FC ou de la S3 sera rejeté parce qu'il serait briser leur mise en cache modèle.
OriginalL'auteur Joseph Lust