Ich kann nicht herausfinden, warum meine .htaccess
Header-Einstellungen nicht funktionieren.
Mein .htaccess
Dateiinhalt:
Header set Access-Control-Allow-Origin *
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Allow-Headers "*"
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
Aber wenn ich sie entferne Header
und hinzufüge, index.php
funktioniert alles einwandfrei.
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: *");
Was vermisse ich?
.htaccess
mod-rewrite
rewrite
cors
user1401592
quelle
quelle
a2enmod headers
Header set
in diesem Fall ist es am besten zu verwenden . Wenn der Code geändert wird und der Header gesetztheader add
wird, sendet Apache doppelte ** Header. Dadurch werden Clients wie beispielsweise Restangular beschädigt.Header add Access-Control-Allow-Credentials "true"
Nur zur Veranschaulichung, ich hatte genau das gleiche Problem und keine der Antworten funktionierte.
Ich habe ein Tool zur Überprüfung von Headern verwendet: http://www.webconfs.com/http-header-check.php
Ich habe mit meiner IP (
http://192.0.2.1/upload
) getestet und es kam Folgendes zurück:Es wurde eine Umleitung durchgeführt, und die AJAX-Anforderung berücksichtigt keine Weiterleitungen.
Es stellte sich heraus, dass der Schrägstrich am Ende der Domain fehlte ( http://192.0.2.1/upload / ).
Ich habe am Ende erneut mit einem Schrägstrich getestet und dies unten erhalten. Es wurde auch ein Schrägstrich im Skript hinzugefügt, und es funktionierte jetzt.
Verwenden Sie dieses Tool, um zu testen, ob Ihre Header gut sind, und um Fehler zu beheben.
quelle
Ich habe ein gemeinsames Hosting auf GoDaddy. Ich brauchte auch eine Antwort auf diese Frage, und nachdem ich mich umgesehen hatte, stellte ich fest, dass es möglich ist.
Ich habe eine .htaccess-Datei geschrieben und sie im selben Ordner wie meine Aktionsseite abgelegt. Hier ist der Inhalt der .htaccess-Datei:
Hier ist mein Ajax-Anruf:
Siehe diesen Artikel als Referenz:
Header-Set Access-Control-Allow-Origin in .htaccess funktioniert nicht
quelle
Seien Sie vorsichtig bei:
Dies ist überhaupt nicht sinnvoll, um jedem Zugang zu gewähren. Es ist vorzuziehen, nur eine Liste von bekannten vertrauenswürdigen Hosts zuzulassen ...
Grüße,
quelle
Ich habe die Apache-Modul-Header a2enmod-Header aktiviert und das Problem wurde behoben.
quelle
sudo a2enmod headers
und ein Neustart brachte es zum Laufen!Versuchen Sie dies im .htaccess des externen Stammordners
Seien Sie vorsichtig bei: Header add Access-Control-Allow-Origin "*" Dies ist überhaupt nicht sinnvoll, um allen Zugriff zu gewähren. Ich denke, Sie sollten Benutzer:
quelle
Ich habe Miros Antwort auf den Link zur Header-Checker-Site http://www.webconfs.com/http-header-check.php gegeben . Bei jeder Verwendung wird eine unangenehme Anzeige angezeigt. Sie ist jedoch sehr nützlich, um das Vorhandensein des Headers "Access-Control-Allow-Origin" zu überprüfen.
Ich lese eine .json-Datei aus dem Javascript auf meiner Webseite. Ich habe festgestellt, dass das Hinzufügen des Folgenden zu meiner .htaccess-Datei das Problem beim Anzeigen meiner Webseite in IE 11 (Version 11.447.14393.0) behoben hat:
Ich habe außerdem Folgendes zu /etc/httpd.conf (Apaches Konfigurationsdatei) hinzugefügt:
Die Header-Checker-Site hat überprüft, ob der Access-Control-Allow-Origin-Header jetzt gesendet wird (danke, Miro!).
Firefox 50.0.2, Opera 41.0.2353.69 und Edge 38.14393.0.0 rufen die Datei jedoch trotzdem ab, auch ohne den Header Access-Control-Allow-Origin. (Hinweis: Möglicherweise werden IP-Adressen überprüft, da die beiden von mir verwendeten Domänen beide auf demselben Server und derselben IPv4-Adresse gehostet werden.)
Chrome 54.0.2840.99 m (64-Bit) ignoriert jedoch den Header "Access-Control-Allow-Origin" und schlägt trotzdem fehl, indem fälschlicherweise Folgendes gemeldet wird:
Ich denke, das muss eine Art "Erste" sein. IE funktioniert richtig; Chrome, Firefox, Opera und Edge sind alle fehlerhaft. und Chrome ist das Schlimmste . Ist das nicht das genaue Gegenteil des Normalfalls?
quelle
Nach einem halben Tag ohne Arbeit. Verwenden eines Header-Check-Dienstes, obwohl alles funktioniert hat. Die Firewall bei der Arbeit entfernte sie
quelle
Versuche dies:
Es ist vorzuziehen, eine Liste bekannter vertrauenswürdiger Hosts zuzulassen.
quelle
Wenn jemand anderes dies versucht, sollte die am besten bewertete Antwort funktionieren. Wenn Sie jedoch Probleme haben, hat der Browser möglicherweise die ANFRAGE zwischengespeichert. Zum Bestätigen eine Abfragezeichenfolge anhängen.
quelle