Je conçois un site Web (par exemple mywebsite.com) et ce site charge les polices font-face d'un autre site (disons anothersite.com). J'avais des problèmes avec le chargement des polices de caractères dans Firefox et j'ai lu sur ce blog :
Firefox (qui prend en charge @ font-face à partir de la v3.5) n'autorise pas les polices inter-domaines par défaut. Cela signifie que la police doit être servie à partir du même domaine (et sous-domaine), sauf si vous pouvez ajouter un en-tête «Access-Control-Allow-Origin» à la police.
Comment puis-je définir l'en-tête Access-Control-Allow-Origin sur la police?
Réponses:
Donc, ce que vous faites est ... Dans le dossier des fichiers de polices, mettez un fichier htaccess avec les éléments suivants.
également dans votre fichier CSS distant, la déclaration font-face a besoin de l'URL absolue complète du fichier de polices (non nécessaire dans les fichiers CSS locaux):
par exemple
Cela résoudra le problème. Une chose à noter est que vous pouvez spécifier exactement quels domaines doivent être autorisés à accéder à votre police. Dans le htaccess ci-dessus, j'ai spécifié que tout le monde peut accéder à ma police
"*"
mais vous pouvez la limiter à:Une seule URL:
Ensemble d'en-têtes Access-Control-Allow-Origin http://example.com
Ou une liste d'URL séparées par des virgulesAccess-Control-Allow-Origin: http://site1.com,http://site2.com
(Les valeurs multiples ne sont pas prises en charge dans les implémentations actuelles)
la source
url('/fonts/League_Gothic.woff') format('woff')
est suffisant en supposant que vous gardiez le dossier 'fonts' dans le même répertoire que votre fichier .css.Selon la documentation officielle , les navigateurs n'aiment pas lorsque vous utilisez le
en-tête si vous utilisez également le
entête. Au lieu de cela, ils veulent que vous autorisiez spécifiquement leur origine. Si vous souhaitez toujours autoriser toutes les origines, vous pouvez faire de la magie Apache simple pour le faire fonctionner (assurez-vous que vous avez
mod_headers
activé):Les navigateurs sont tenus d'envoyer l'en-
Origin
tête sur toutes les demandes inter-domaines. Les documents indiquent spécifiquement que vous devez renvoyer cet en-tête dans l'en-Access-Control-Allow-Origin
tête si vous acceptez / prévoyez d'accepter la demande. C'est ce que fait cetteHeader
directive.la source
?yourdomain
œuvres dans ce dernier cas, mais dévalue les avantages d'utiliser un CDN un peu)SetEnvIfNoCase Origin (.+) HTTP_ORIGIN=$1
.La réponse acceptée ne fonctionne malheureusement pas pour moi, car les fichiers CSS de mon site @importent les fichiers CSS de polices, et ceux-ci sont tous stockés sur un CDN Rackspace Cloud Files.
Puisque les en-têtes Apache ne sont jamais générés (puisque mon CSS n'est pas sur Apache), j'ai dû faire plusieurs choses:
Voyez si vous pouvez vous en tirer avec juste le # 1, car le second nécessite un peu de travail en ligne de commande.
Pour ajouter l'en-tête personnalisé dans # 1:
Si vous devez continuer et faire le n ° 2, vous aurez besoin d'une ligne de commande avec CURL
À partir des résultats renvoyés, extrayez les valeurs de X-Auth-Token et X-Storage-Url
Bien sûr, ce processus ne fonctionne que si vous utilisez le CDN Rackspace. D'autres CDN peuvent offrir des fonctionnalités similaires pour éditer les en-têtes d'objet et changer les types de contenu, alors peut-être que vous aurez de la chance (et publierez des informations supplémentaires ici).
la source
Pour une application basée sur Java, ajoutez ceci à votre fichier web.xml:
la source
Vérifiez ce lien. Cela résoudra certainement votre problème. Il existe de nombreuses solutions pour faire des appels cross domain GET Ajax MAIS POST DEMANDE POUR CROSS DOMAIN EST RÉSOLU ICI . Il m'a fallu 3 jours pour le comprendre.
http://blogs.msdn.com/b/carlosfigueira/archive/2012/02/20/implementing-cors-support-in-asp-net-web-apis.aspx
la source
Dans votre fichier.php de la requête ajax, vous pouvez définir l'en-tête de valeur.
la source