Maison >développement back-end >tutoriel php >Une introduction à la méthode de contrôle des noms de domaine inter-domaines et d'autorisation des téléchargements d'images inter-domaines dans le backend PHP
Le contenu de cet article concerne la méthode de contrôle des noms de domaine inter-domaines et l'autorisation du téléchargement d'images inter-domaines via le backend PHP. J'espère qu'il aura une certaine valeur de référence. vous être utile.
Des problèmes inter-domaines doivent souvent être résolus, et le front-end doit être fait plus directement
Choisissez soit la soumission asynchrone ajax, XML ou jsonp, soit la soumission de formulaire
jsonp peut pratiquement tout gérer. Il y a quelques problèmes inter-domaines, mais le problème est également relativement évident. Il ne peut être soumis que via la méthode get
et jsonp soumet la demande en mettant des paramètres dans l'URL
. 🎜>
Cependant, tous les navigateurs ont des restrictions de longueur d'URL. , différents navigateurs ont des restrictions de longueur différentesLorsque vous devez soumettre un grand paragraphe de contenu, comme un article, si vous utilisez jsonp et la longueur dépasse la longueur, vous ne pouvez que diviser et soumettre C'est très gênant, et au final ce n'est pas correct La sécurité a un certain impactEt axiox ne prend pas en charge jsonp maintenant bien qu'il y en ait. façons de le résoudreEn particulier pour le téléchargement de ressources d'images, il ne peut pas être bien implémenté avec des méthodes telles que jsonpScénarios qui nécessitent le téléchargement d'images inter-domaines
Bien sûr, il est préférable de ne pas inter-domaines, mais la plupart des projets ont actuellement le front-end et le back-end séparésLes ressources statiques et les interfaces sont respectivement des noms de domaine différents ou des noms de domaine de deuxième niveau, qui implique un inter-domaineS'il s'agit d'un téléchargement de ressources, le backend Access-Control-Allow-Origin et la requête actuelle sont requis pour le cross-domain. Identique à Origin, il ne peut pas être défini sur *Solution php
S'il s'agit d'une demande de données traditionnelle, alors le backend définit directement Access-Control-Allow-Origin sur * Goodheader('Access-Control-Allow-Origin:*');Mais le L'origine du téléchargement de ressources telles que des images doit être la même que la valeur de Access-Control-Allow-OriginSi vous définissez Access-Control-Allow-Origin pour qu'il soit identique à l'origine actuelle. Si tel est le cas, il n'y a qu'un seul nom de domaine qui peut être téléchargé Si d'autres noms de domaine doivent appeler cette interface, ils seront bannis Le meilleur moyen est donc de limiter la liste des noms de domaine qui peuvent appelle cette interface. , et améliore également un certain degré de sécurité La méthode consiste à obtenir d'abord l'Origine de la requête en cours, et si elle est dans la liste des noms de domaine autorisés à accéder, définissez la valeur de Access-Control-Allow-Origin sur The Origin of the current request
$originList = [ 'http://127.0.0.1', 'http://www.php.cn', 'http://www.php.cn', ]; if(in_array($_SERVER['HTTP_ORIGIN'], $originList)){ header('Access-Control-Allow-Origin:'.$origin); header("Access-Control-Allow-Credentials: true"); header('Access-Control-Allow-Headers:x-requested-with,content-type'); header("Access-Control-Allow-Methods: POST,GET,OPTIONS"); }De cette façon, vous pouvez contrôler les noms de domaine qui peuvent être inter-domaines et les ressources d'image peuvent être téléchargé aussi volontiers que dans le même domaineLa méthode de publication est la même pour la soumission inter-domaines Applicable
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!