it-swarm.com.de

htaccess Access-Control-Allow-Origin

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 dieser schreckliche Fehler angezeigt:

Access-Control-Allow-Origin

Hier können Sie sehen, es lädt perfekt: http://tzook.info/bot/

Aber auf dieser anderen Website wird 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 geht immer noch nicht.

109
Tzook Bar Noy

Versuchen Sie dies im .htaccess des externen Stammordners:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

Und wenn es sich nur um .js-Skripte handelt, sollten Sie den obigen Code darin einschließen:

<FilesMatch "\.(js)$">
...
</FilesMatch>
223
vifargent

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, kennen andere Distributionen nicht)

sie können die Liste der geladenen Module mit überprüfen

Apache2ctl -M

um mod_headers zu aktivieren kannst du benutzen

a2enmod headers

natürlich müssen Sie den Apache nach jeder Änderung neu starten:

/etc/init.d/Apache2 restart

Dann können Sie verwenden

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

Und wenn mod_headers nicht aktiv ist, tut diese Zeile überhaupt nichts. Du kannst versuchen, die if-Klausel zu überspringen und einfach Header set Access-Control-Allow-Origin "*" In deine Konfiguration einzufügen, dann sollte sie beim Start einen Fehler auslösen, wenn mod_headers nicht aktiv ist.

44
Lukas

meiner Erfahrung nach;

wenn es in php nicht funktioniert, tun Sie dies in .htaccess es hat bei mir funktioniert

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin http://www.vknyvz.com  
    Header set Access-Control-Allow-Credentials true
</IfModule>
  • anmeldeinformationen können je nach Ajax-Anforderungsparametern wahr oder falsch sein
26
vknyvz

Fügen Sie Ihrem Zeichensatzordner eine .htaccess - Datei mit den folgenden Anweisungen hinzu, wenn Sie Probleme beim Zugriff auf Ihre Zeichensätze haben. Kann leicht für die Verwendung mit . Css oder . Js Dateien geändert werden.

<FilesMatch "\.(eot|ttf|otf|woff)$">
    Header set Access-Control-Allow-Origin "*"
</FilesMatch>
10
Thoman

In Zend Framework 2.0 hatte ich dieses Problem. Kann auf zwei Arten gelöst werden: .htaccess oder PHP-Header Ich bevorzuge .htaccess, also ändere ich .htaccess von:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

zu

RewriteEngine On

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

und es fängt an zu arbeiten

7
YumYumYum

Die anderen Antworten haben bei mir nicht geklappt. Das hat Apache2 letztendlich weitergebracht:

1) Aktiviere den Header Mod:

Sudo a2enmod headers

2) Erstelle das /etc/Apache2/mods-enabled/headers.conf Datei und einfügen:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

3) Starten Sie Ihren Server neu:

Sudo service Apache2 restart

6
songololo

Übrigens: Die .htaccess-Konfiguration muss auf dem Server ausgeführt werden, auf dem sich die API befindet. Wenn Sie beispielsweise eine AngularJS-App in einer x.com-Domain erstellen und eine Rest-API in y.com erstellen, sollten Sie Access-Control-Allow-Origin "*" in der .htaccess-Datei im Stammordner von y.com not x festlegen .com :)

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

Vergewissern Sie sich auch, wie Lukas erwähnt hat, dass Sie mod_headers aktiviert haben, wenn Sie Apache verwenden

4
Saman Shafigh

Stellen Sie sicher, dass keine Umleitung stattfindet. Dies kann passieren, wenn Sie den abschließenden Schrägstrich nicht in die URL einfügen.

Weitere Informationen finden Sie in dieser Antwort - https://stackoverflow.com/a/27872891/614524

1
JDavis