CORS-Konflikt nach dem Aktivieren von FPM in PHP

CORS-Konflikt nach dem Aktivieren von FPM in PHP

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 .htaccessjetzt, 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 mergeaufgerufen worden wäre, anstatt Header set? „Zusammengeführte“ Werte wie diese werden vom Allow-Control-Allow-OriginHeader nicht offiziell unterstützt, daher kann die Browserunterstützung unterschiedlich sein und erklärt, warum es bei Ihnen nicht funktioniert.

.htaccessob 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 setifemptyAktion:

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 onsuccessund sollte bedeuten, dass der Header effektiv zweimal gesetzt wird.

Ich glaube jedoch nicht, dass mehrere Access-Control-Allow-OriginHeader unbedingt zum Standard gehören, das Verhalten der Browser kann also unterschiedlich sein.

Siehe auch die folgende verwandte Frage auf StackOverflow:

verwandte Informationen