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

Patricia Arquette
Libérer: 2024-10-31 19:46:29
original
437 Les gens l'ont consulté

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"
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!