Heim >Backend-Entwicklung >PHP-Tutorial >Warum schlägt meine CORS-Anfrage mit „Origin ist durch Access-Control-Allow-Origin nicht zulässig' fehl?
Problembeschreibung:
Beim Versuch, Formulardaten über CORS (Cross-Origin Resource Sharing) von www.siteone.com zu www.sitetwo.com 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.
Obwohl die folgenden Header in cors.php auf www.sitetwo.com festgelegt wurden:
header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
Lösung:
Das Problem liegt in der Art und Weise, wie CORS-Anfrageheader behandelt werden. Der folgende aktualisierte Code für cors.php bietet eine umfassendere Antwort auf CORS-Anfragen:
<code class="php"><?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); } // Respond to the request echo "You have CORS!"; ?></code>
Dieser überarbeitete Code ermöglicht ursprungsübergreifende Anfragen von jedem Ursprung, validiert Anfragemethoden und Header und speichert die CORS-Antwort für einen zwischen Tag und reagiert angemessen auf OPTIONS-Anfragen.
Das obige ist der detaillierte Inhalt vonWarum schlägt meine CORS-Anfrage mit „Origin ist durch Access-Control-Allow-Origin nicht zulässig' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!