Maison  >  Article  >  développement back-end  >  Comment gérer les problèmes inter-domaines dans le développement PHP

Comment gérer les problèmes inter-domaines dans le développement PHP

WBOY
WBOYoriginal
2023-10-10 21:18:293022parcourir

Comment gérer les problèmes inter-domaines dans le développement PHP

Comment gérer les problèmes inter-domaines dans le développement PHP

Introduction :
Avec le développement rapide d'Internet, les requêtes inter-domaines sont devenues un problème courant dans le processus de développement. Inter-domaine signifie que du côté du navigateur, la page Web actuelle effectue une requête http inter-domaine via XMLHttpRequest ou Fetch API, c'est-à-dire en accédant à une URL non originale. Dans le développement PHP, nous devons souvent traiter des requêtes inter-domaines. Cet article expliquera comment gérer les problèmes inter-domaines dans le développement PHP et fournira des exemples de code spécifiques.

1. Comprendre les problèmes inter-domaines

  1. Politique de même origine :
    La politique de même origine est une politique de sécurité du navigateur qui restreint la façon dont un document ou un script de page Web interagit avec d'autres sources. Si le protocole, le port et l'hôte de deux URL sont identiques, elles sont considérées comme ayant la même origine. Sinon, c'est cross-domain.
  2. Partage de ressources d'origine croisée (CORS) :
    CORS permet au serveur de spécifier dans la réponse que les pages Web d'origines différentes sont autorisées à accéder à ses propres ressources.

2. Méthodes pour résoudre les problèmes inter-domaines

  1. Modifier l'en-tête de réponse côté serveur
    En modifiant les informations d'en-tête de réponse côté serveur, l'accès aux requêtes inter-domaines peut être obtenu.

Dans le code PHP, vous pouvez utiliser la fonction header pour définir l'en-tête de réponse. Voici un exemple de paramètre permettant d'autoriser les requêtes inter-domaines :

header('Access-Control-Allow-Origin: *'); // 允许所有来源的跨域请求
header('Access-Control-Allow-Methods: *'); // 允许所有HTTP方法的跨域请求
header('Access-Control-Allow-Headers: *'); // 允许所有的请求头
  1. JSONP (JSON avec remplissage)
    JSONP est une méthode de requête inter-domaines implémentée en créant dynamiquement des balises <script></script>. Dans JSONP, l'objet XMLHttpRequest n'est plus utilisé, mais les ressources non sources sont obtenues en insérant dynamiquement des balises <script></script>. <script></script>标签实现的一种跨域请求方式。在JSONP中,不再使用XMLHttpRequest对象,而是通过动态插入<script></script>标签的方式来获取非同源的资源。

以下是一个简单的PHP返回JSONP格式数据的示例:

<?php
    $callback = $_GET['callback']; // 获取前端传递的回调函数名称
    $data = array('name' => 'John', 'age' => 20);
    $json = json_encode($data);
    echo $callback . '(' . $json . ')'; // 输出jsonp格式的数据
?>

在前端页面中,可以通过创建<script></script>

    Voici un exemple simple de PHP renvoyant des données au format JSONP :
  1. <script>
        function handleResponse(data) {
            // 处理获取到的数据
        }
    
        var script = document.createElement('script');
        script.src = 'http://example.com/api.php?callback=handleResponse';
        document.body.appendChild(script);
    </script>

    Dans la page front-end, les données JSONP peuvent être demandées en créant une balise <script></script> :
  2. <?php
        $url = $_GET['url']; // 获取前端传递的目标url
        $data = file_get_contents($url, false);
        echo $data; // 将目标服务器的响应返回给客户端
    ?>

Utilisation d'un serveur proxy

Dans le développement PHP, vous pouvez résoudre le problème des requêtes inter-domaines en créant un serveur proxy. Le serveur proxy est chargé de transmettre la demande du client au serveur cible et de renvoyer la réponse du serveur cible au client. De cette façon, les requêtes du client et du serveur se trouvent dans le même domaine, évitant ainsi les problèmes inter-domaines.

Ce qui suit est un exemple de code pour un simple serveur proxy PHP :

// 使用ajax方式请求代理服务器
$.ajax({
    url: 'http://example.com/proxy.php',
    data: { url: 'http://example.com/api' },
    success: function(data) {
        // 处理获取到的数据
    }
});

Dans la page front-end, vous pouvez obtenir des ressources inter-domaines en envoyant une requête au serveur proxy : 🎜rrreee🎜Conclusion : 🎜Cross- les problèmes de domaine sont dans le développement PHP un défi commun. Cet article présente trois méthodes courantes pour résoudre les problèmes inter-domaines : la modification côté serveur des en-têtes de réponse, JSONP et l'utilisation de serveurs proxy. En fonction des besoins et des scénarios de développement spécifiques, choisissez des méthodes appropriées pour traiter les problèmes inter-domaines et implémentez un code spécifique basé sur la situation réelle. En gérant correctement les problèmes inter-domaines, nous pouvons garantir que nos applications peuvent interagir normalement avec d'autres sites et offrir une bonne expérience utilisateur. 🎜

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:
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