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!