Ich entwerfe eine Website (z. B. mywebsite.com) und diese Website lädt Schriftarten von einer anderen Website (z. B. anothersite.com). Ich hatte Probleme mit dem Laden der Schriftart in Firefox und las in diesem Blog :
Firefox (das @ font-face ab Version 3.5 unterstützt) erlaubt standardmäßig keine domänenübergreifenden Schriftarten. Dies bedeutet, dass die Schriftart von derselben Domäne (und Unterdomäne) bereitgestellt werden muss, es sei denn, Sie können der Schriftart einen Header "Access-Control-Allow-Origin" hinzufügen.
Wie kann ich den Header Access-Control-Allow-Origin auf die Schriftart setzen?
Antworten:
Was Sie also tun, ist ... Legen Sie im Ordner "font files" eine htaccess-Datei mit den folgenden Angaben ab.
Auch in Ihrer Remote-CSS-Datei benötigt die Schriftartdeklaration die vollständige absolute URL der Schriftartdatei (in lokalen CSS-Dateien nicht erforderlich):
z.B
Das wird das Problem beheben. Beachten Sie, dass Sie genau angeben können, welche Domains auf Ihre Schriftart zugreifen dürfen. Im obigen htaccess habe ich angegeben, dass jeder auf meine Schriftart zugreifen kann,
"*"
jedoch können Sie sie auf Folgendes beschränken:Eine einzelne URL:
Header-Set Access-Control-Allow-Origin http://example.com
Oder eine durch Kommas getrennte Liste von URLsAccess-Control-Allow-Origin: http://site1.com,http://site2.com
(Mehrere Werte werden in aktuellen Implementierungen nicht unterstützt.)
quelle
url('/fonts/League_Gothic.woff') format('woff')
ist ausreichend, vorausgesetzt, Sie behalten den Ordner "Schriftarten" im selben Verzeichnis wie Ihre CSS-Datei.Laut den offiziellen Dokumenten gefällt es Browsern nicht, wenn Sie das verwenden
Header, wenn Sie auch die verwenden
Header. Stattdessen möchten sie, dass Sie ihre Herkunft spezifisch zulassen. Wenn Sie weiterhin alle Ursprünge zulassen möchten, können Sie eine einfache Apache-Magie ausführen, um sie zum Laufen zu bringen (stellen Sie sicher, dass Sie sie
mod_headers
aktiviert haben):Browser müssen den
Origin
Header für alle domänenübergreifenden Anforderungen senden . In den Dokumenten wird ausdrücklich angegeben, dass Sie diesen Header wieder imAccess-Control-Allow-Origin
Header wiedergeben müssen, wenn Sie die Anforderung annehmen / planen. Das ist es, was dieseHeader
Richtlinie tut.quelle
?yourdomain
funktioniert im letzteren Fall, aber entwertet die Vorteile der Verwendung eines CDN ein wenig)SetEnvIfNoCase Origin (.+) HTTP_ORIGIN=$1
.Die akzeptierte Antwort funktioniert bei mir leider nicht, da meine Site-CSS-Dateien die Schriftart-CSS-Dateien importieren und diese alle auf einem Rackspace Cloud Files-CDN gespeichert sind.
Da die Apache-Header nie generiert werden (da mein CSS nicht auf Apache ist), musste ich verschiedene Dinge tun:
Sehen Sie, ob Sie mit nur # 1 davonkommen können, da die zweite ein wenig Kommandozeilenarbeit erfordert.
So fügen Sie den benutzerdefinierten Header in # 1 hinzu:
Wenn Sie fortfahren und # 2 ausführen müssen, benötigen Sie eine Befehlszeile mit CURL
Extrahieren Sie aus den zurückgegebenen Ergebnissen die Werte für X-Auth-Token und X-Storage-Url
Dieser Vorgang funktioniert natürlich nur, wenn Sie das Rackspace-CDN verwenden. Andere CDNs bieten möglicherweise ähnliche Funktionen zum Bearbeiten von Objektheadern und zum Ändern von Inhaltstypen. Vielleicht haben Sie Glück (und veröffentlichen hier einige zusätzliche Informationen).
quelle
Fügen Sie für Java-basierte Anwendungen Folgendes zu Ihrer web.xml-Datei hinzu:
quelle
Überprüfen Sie diesen Link. Es wird definitiv Ihr Problem lösen. Es gibt viele Lösungen, um domänenübergreifende GET Ajax-Anrufe zu tätigen, ABER POST-ANFRAGE FÜR CROSS DOMAIN WIRD HIER GELÖST . Ich habe 3 Tage gebraucht, um es herauszufinden.
http://blogs.msdn.com/b/carlosfigueira/archive/2012/02/20/implementing-cors-support-in-asp-net-web-apis.aspx
quelle
Kann in Ihrer file.php der Anfrage ajax den Wertheader setzen.
quelle