Heim  >  Artikel  >  Backend-Entwicklung  >  Warum sollten Sie PHP anstelle von .htaccess für die CORS-Konfiguration wählen?

Warum sollten Sie PHP anstelle von .htaccess für die CORS-Konfiguration wählen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 19:46:29440Durchsuche

Why Choose PHP Over .htaccess for CORS Configuration?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn