Heim >Backend-Entwicklung >PHP-Tutorial >Warum funktioniert CORS in meiner PHP-Anwendung nicht, obwohl Access-Control-Allow-Origin-Header gesetzt sind?
CORS funktioniert nicht in PHP
Beim Versuch, eine POST-Anfrage mit Formulardaten von www.siteone.com an www.sitetwo zu senden. com, das CORS verwendet, ist der folgende Fehler aufgetreten:
XMLHttpRequest cannot load http://www.sitetwo.com/cors.php. Origin http://www.siteone.com is not allowed by Access-Control-Allow-Origin.
Trotz der Konfiguration der CORS-Header in cors.php auf www.sitetwo.com:
<code class="php">header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: POST, GET, OPTIONS');</code>
Die Anfrage schlägt immer noch fehl auf eine fehlerhafte Implementierung der Header-Konfiguration zurückzuführen. Der aktualisierte Code, der dieses Problem behebt, lautet:
<code class="php">// Allow from any origin if (isset($_SERVER['HTTP_ORIGIN'])) { header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); header('Access-Control-Allow-Credentials: true'); header('Access-Control-Max-Age: 86400'); // cache for 1 day } // Access-Control headers are received during OPTIONS requests if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}"); exit(0); } echo "You have CORS!";</code>
Dieser überarbeitete Code reagiert auf die bei OPTIONS-Anfragen empfangenen Access-Control-Header und lässt Anfragen von jedem Ursprung zu, sodass CORS ordnungsgemäß funktioniert.
Das obige ist der detaillierte Inhalt vonWarum funktioniert CORS in meiner PHP-Anwendung nicht, obwohl Access-Control-Allow-Origin-Header gesetzt sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!