
In der .htaccess-Datei auf meinem Webserver habe ich den folgenden CORS-Header festgelegt:
Header set Access-Control-Allow-Origin "example.com"
In einem meiner PHP-Skripte, das ich häufig aufrufe, wenn ich vom lokalen Host aus arbeite, habe ich diesen Header gesetzt:
header("Access-Control-Allow-Origin: *");
Das hat bei mir bis gestern funktioniert, als ich FPM für PHP aktiviert habe. Jetzt erhalte ich die folgende Fehlermeldung:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.example.com/script.php. (Reason: CORS header 'Access-Control-Allow-Origin' does not match '*, example.com').
Ich erhalte diesen Fehler nur, wenn ich vom lokalen Host aus aufrufe, nicht, wenn ich von der Website aus aufrufe. Ich frage mich, ob es .htaccess
jetzt, da FPM aktiviert ist, eine Möglichkeit gibt, den CORS-Header über PHP zu überschreiben.
Antwort1
Grund: CORS-Header „Access-Control-Allow-Origin“ stimmt nicht mit „*, example.com“ überein.
Seltsam, das ist, als ob Header merge
aufgerufen worden wäre, anstatt Header set
? „Zusammengeführte“ Werte wie diese werden vom Allow-Control-Allow-Origin
Header nicht offiziell unterstützt, daher kann die Browserunterstützung unterschiedlich sein und erklärt, warum es bei Ihnen nicht funktioniert.
.htaccess
ob es jetzt, da FPM aktiviert ist, eine Möglichkeit gibt, den CORS-Header über PHP zu überschreiben .
Ich denke, Sie müssen versuchen, es so einzurichten, dass Apache den von PHP festgelegten Header (der zuvor festgelegt wurde) nicht überschreibt, anstatt dass PHP Apache überschreibt. Versuchen Sie die folgende setifempty
Aktion:
Header setifempty Access-Control-Allow-Origin "example.com"
Sie können auch die Bedingung ausprobieren always
, d. h. Header always set ....
- dies ist eine andere "Gruppe" von Headern als dieStandard onsuccess
und sollte bedeuten, dass der Header effektiv zweimal gesetzt wird.
Ich glaube jedoch nicht, dass mehrere Access-Control-Allow-Origin
Header unbedingt zum Standard gehören, das Verhalten der Browser kann also unterschiedlich sein.
Siehe auch die folgende verwandte Frage auf StackOverflow: