Maison  >  Article  >  développement back-end  >  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

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

不言
不言avant
2018-11-12 13:52:513941parcourir

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

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

Et axiox ne prend pas en charge jsonp maintenant bien qu'il y en ait. façons de le résoudre

En particulier pour le téléchargement de ressources d'images, il ne peut pas être bien implémenté avec des méthodes telles que jsonp

Scé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és

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

S'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 * Good
 header('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-Origin

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

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

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer