CORS in .htaccess vs. PHP konfigurieren
Bei der Entwicklung einer Cross-Origin-Anwendung mit Angular.js ist es notwendig, CORS zu aktivieren (Cross-Origin Resource Sharing), um Anfragen unterschiedlicher Herkunft zu ermöglichen. Obwohl .htaccess eine gängige Methode zum Konfigurieren von CORS ist, funktioniert es manchmal nicht wie erwartet.
Je nach der .htaccess-Konfiguration des Benutzers sollten die folgenden Header hinzugefügt werden:
Header set Access-Control-Allow-Origin "*" Header set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
Allerdings , tritt in der Angular-Anwendung immer noch ein Fehler auf. Da die .htaccess-Konfiguration für statische Dateien bereits vorhanden ist, entscheidet sich der Benutzer, einen alternativen Ansatz mit PHP zu erkunden.
In der Datei index.php wird der folgende Code hinzugefügt:
<code class="php">// Allow from any origin if (isset($_SERVER['HTTP_ORIGIN'])) { // should do a check here to match $_SERVER['HTTP_ORIGIN'] to a // whitelist of safe domains 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, PUT, DELETE, OPTIONS"); if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}"); }</code>
Da Slim das verwendete Framework ist, wird eine zusätzliche Route hinzugefügt, um OPTIONS-Anfragen zu verarbeiten:
<code class="php">// return HTTP 200 for HTTP OPTIONS requests $app->map('/:x+', function($x) { http_response_code(200); })->via('OPTIONS');</code>
Durch die Implementierung der CORS-Konfiguration in PHP anstelle von .htaccess löst der Benutzer das Problem der Cross-Origin-Anfrage erfolgreich und die Angular-Anwendung kann jetzt Anfragen an den RESTful-Dienst stellen.
Das obige ist der detaillierte Inhalt vonWarum sollten Sie PHP anstelle von .htaccess für die CORS-Konfiguration wählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!