Maison  >  Article  >  développement back-end  >  Pourquoi choisir PHP plutôt que .htaccess pour la configuration CORS ?

Pourquoi choisir PHP plutôt que .htaccess pour la configuration CORS ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-31 19:46:29440parcourir

Why Choose PHP Over .htaccess for CORS Configuration?

Configurer CORS dans .htaccess vs PHP

Lors du développement d'une application cross-origin à l'aide d'Angular.js, il est nécessaire d'activer CORS (Cross-Origin Resource Sharing) pour autoriser les requêtes provenant de différentes origines. Bien que .htaccess soit une méthode courante pour configurer CORS, il peut parfois ne pas fonctionner comme prévu.

Selon la configuration .htaccess de l'utilisateur, les en-têtes suivants doivent être ajoutés :

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"

Cependant , l'application Angular rencontre toujours une erreur. La configuration .htaccess pour les fichiers statiques étant déjà en place, l'utilisateur décide d'explorer une approche alternative utilisant PHP.

Dans le fichier index.php, le code suivant est ajouté :

<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>

Puisque Slim est le framework utilisé, une route supplémentaire est ajoutée pour gérer les requêtes OPTIONS :

<code class="php">// return HTTP 200 for HTTP OPTIONS requests
$app->map('/:x+', function($x) {
    http_response_code(200);
})->via('OPTIONS');</code>

En implémentant la configuration CORS en PHP au lieu de .htaccess, l'utilisateur résout avec succès le problème de requête d'origine croisée et l'application Angular peut désormais faire des requêtes au service RESTful.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn