Maison > Article > développement back-end > Comment PHP gère-t-il les requêtes inter-domaines et le contrôle d'accès ?
Comment PHP gère-t-il les requêtes inter-domaines et le contrôle d'accès ?
Résumé :
Avec le développement des applications Internet, les requêtes inter-domaines et le contrôle d'accès sont devenus un enjeu important dans le développement PHP. Cet article présentera les méthodes et techniques sur la manière dont PHP gère les requêtes inter-domaines et le contrôle d'accès, dans le but d'aider les développeurs à mieux comprendre et gérer ces problèmes.
2.1 JSONP (JSON with padding)
JSONP est une solution aux requêtes cross-domaines, qui crée des scripts dynamiquement des balises pour obtenir des données. Les données renvoyées par le serveur doivent être encapsulées dans une fonction de rappel. Le navigateur exécute cette fonction de rappel pour obtenir les données renvoyées par le serveur.
2.2 CORS (Cross-Origin Resource Sharing)
CORS est un mécanisme qui prend en charge les paramètres côté serveur, permettant au serveur d'indiquer au navigateur à quelles sources le serveur autorise l'accès. En PHP, nous pouvons implémenter CORS en définissant les informations d'en-tête de réponse.
Solution JSONP 3.1
PHP peut générer dynamiquement du code javascript contenant des données basées sur les paramètres de rappel envoyés par le client, par exemple :
<?php $data = array('name' => 'John', 'age' => 18); $callback = $_GET['callback']; echo $callback . '(' . json_encode($data) . ')'; ?>
Solution CORS 3.2
PHP CORS est implémenté en définissant les informations d'en-tête de réponse, par exemple :
<?php header("Access-Control-Allow-Origin: http://example.com");// 允许http://example.com域名访问 header("Access-Control-Allow-Methods: GET, POST, OPTIONS");// 允许GET、POST、OPTIONS方法 header("Access-Control-Allow-Headers: Content-Type");// 允许Content-Type请求头 ?>
4.1 Identifiants
Si vous devez inter-domaines Pour envoyer des informations d'identification (telles que des cookies, des informations d'authentification HTTP) dans la demande, vous devez définir « Access-Control-Allow-Credentials » sur true et « withCredentials » sur true du côté de la demande.
4.2 Demande de contrôle en amont (Preflight)
Lorsque les conditions suivantes sont remplies, le navigateur enverra une demande de contrôle en amont (OPTIONS) pour obtenir les informations d'autorisation du serveur :
Le code PHP doit traiter la requête de contrôle en amont et renvoyer les informations d'en-tête de réponse correctes.
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!