Ich erstelle ein Skript, das extern auf anderen Websites geladen wird. Es lädt CSS und HTML und funktioniert gut auf meinen eigenen Servern.
Wenn ich es jedoch auf einer anderen Website versuche, wird der schreckliche Fehler angezeigt:
Access-Control-Allow-Origin
Hier können Sie sehen, dass es perfekt geladen wird : http://tzook.info/bot/
Auf dieser anderen Website wird jedoch der Fehler angezeigt : http://cantloseweight.co/robot/
Ich habe das Ladeskript auf jsfiddle hochgeladen: http://jsfiddle.net/TL5LK/
Ich habe versucht, die htaccess-Datei folgendermaßen zu bearbeiten:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin *
</IfModule>
Oder so:
Header set Access-Control-Allow-Origin *
Aber es funktioniert immer noch nicht.
.htaccess
cors
cross-domain
Tzook Bar Noy
quelle
quelle
FilesMatch
.*
dann?js
habejson
.*
dieser Option kann jede Ursprungsdomäne auf diese Ressource zugreifen. Es ist keine Liste von Ressourcen, sondern eine Liste von referenzierenden Domänen.headers
Modul zu aktivieren :a2enmod headers
Niemand sagt, dass Sie auch mod_headers aktiviert haben müssen. Wenn dies immer noch nicht funktioniert, versuchen Sie Folgendes :
(Die folgenden Tipps funktionieren unter Ubuntu, Sie kennen keine anderen Distributionen.)
Sie können die Liste der geladenen Module mit überprüfen
Um mod_headers zu aktivieren, können Sie verwenden
Natürlich müssen Sie Apache nach allen Änderungen neu starten:
Dann können Sie verwenden
Und wenn mod_headers nicht aktiv ist, wird diese Zeile überhaupt nichts tun. Sie können versuchen, die if-Klausel zu überspringen und sie einfach
Header set Access-Control-Allow-Origin "*"
in Ihre Konfiguration einzufügen. Dann sollte beim Start ein Fehler ausgegeben werden, wenn mod_headers nicht aktiv ist.quelle
meiner Erfahrung nach;
wenn es nicht von innen heraus funktioniert
php
tut dies in.htaccess
es für mich gearbeitetquelle
Fügen Sie
.htaccess
Ihrem Schriftartenordner eine Datei mit den folgenden Anweisungen hinzu, wenn Sie Probleme beim Zugriff auf Ihre Schriftarten haben. Kann leicht für die Verwendung mit CSS- oder JS- Dateien geändert werden.quelle
<FilesMatch>
Anweisung nicht erforderlich ist, wenn sich Ihre.htaccess
Datei , wie oben vorgeschlagen, in Ihrem Schriftartenverzeichnis befindet und Ihr Schriftartenverzeichnis nur enthält.eot
,.ttf
,.otf
Und / oder.woff
Dateien.Die anderen Antworten haben bei mir nicht funktioniert, das hat letztendlich den Trick für Apache2 gemacht:
1) Aktiviere den Header Mod:
sudo a2enmod headers
2) Erstellen Sie die
/etc/apache2/mods-enabled/headers.conf
Datei und fügen Sie Folgendes ein:3) Starten Sie Ihren Server neu:
sudo service apache2 restart
quelle
In Zend Framework 2.0 hatte ich dieses Problem. Kann auf zwei Arten gelöst werden .htaccess oder PHP-Header Ich bevorzuge .htaccess, also habe ich .htaccess geändert von:
zu
und es fängt an zu arbeiten
quelle
Übrigens: Die .htaccess-Konfiguration muss auf dem Server erfolgen, auf dem sich die API befindet. Wenn Sie beispielsweise eine AngularJS-App auf der x.com-Domäne erstellen und eine Rest-API auf y.com erstellen, sollten Sie Access-Control-Allow-Origin "*" in der .htaccess-Datei im Stammordner von y.com und nicht auf x festlegen .com :)
Stellen Sie auch, wie Lukas erwähnt hat, sicher, dass Sie mod_headers aktiviert haben, wenn Sie Apache verwenden
quelle
Stellen Sie sicher, dass keine Weiterleitung stattfindet. Dies kann passieren, wenn Sie den abschließenden Schrägstrich nicht in die URL aufnehmen.
Weitere Informationen finden Sie in dieser Antwort unter https://stackoverflow.com/a/27872891/614524
quelle
Wenn Ihr Host nicht pvn oder dediziert ist, ist es schwierig, den Server neu zu starten.
Bessere Lösung von mir, bearbeiten Sie einfach Ihre CSS-Datei (in einer anderen Domain oder Ihrer Subdomain), die Schriftart eot, woff usw. zu Ihrer Herkunft aufruft (Ihre Domain oder www Ihre Domain). es wird dein Problem lösen.
Ich meine, relative URL auf CSS zu absoluter URL-Ursprungsdomäne bearbeiten
quelle