Table des matières
1. Qu'est-ce que le saute-mouton ?
2. Pourquoi les requêtes cross-domaines sont-elles générées ?
3. Qu'est-ce que la politique de même origine ?
4. Pourquoi les navigateurs utilisent-ils la même politique d'origine ?
Lorsque nous demandons normalement des données JSON, le serveur renvoie est une chaîne de données de type JSON, et lorsque l'on utilise le mode JSONP pour demander des données, le serveur renvoie un code JavaScript exécutable. Parce que le principe inter-domaines de jsonp est de charger dynamiquement le src du script, nous ne pouvons transmettre les paramètres que via l'url, donc le type type de jsonp ne peut être obtenu qu'exemple :
3. Configurez les Cors de même origine en arrière-plan ( recommandé)
Pour la configuration inter-domaines sur SpringBoot2.0, utilisez la configuration de code suivante pour la résoudre parfaitement. Résolvez vos problèmes de requêtes inter-domaines front-end et back-end
5、使用nginx做转发
Maison développement back-end tutoriel php Cinq solutions pour les sites Web multi-domaines

Cinq solutions pour les sites Web multi-domaines

Apr 30, 2019 pm 01:50 PM
ajax http

Étant donné que le navigateur utilise la politique de même origine, une requête inter-domaines est générée. Une page Web demande des ressources à une autre page Web avec un nom de domaine différent/un protocole différent/un port différent. Il s'agit d'un inter-domaine. Cet article propose 5 façons de résoudre le problème du cross-domain du site Web. Les amis intéressés peuvent y jeter un œil.

1. Qu'est-ce que le saute-mouton ?

  • Une page Web demande des ressources à une autre page Web avec un nom de domaine différent/un protocole différent/un port différent. Il s'agit d'un inter-domaine.
  • Raison inter-domaines : sur le site Web actuel de demande de nom de domaine, l'envoi d'autres noms de domaine via des requêtes ajax n'est pas autorisé par défaut.

2. Pourquoi les requêtes cross-domaines sont-elles générées ?

  • Parce que le navigateur utilise la politique de même origine

3. Qu'est-ce que la politique de même origine ?

  • La politique de même origine est une politique de sécurité bien connue proposée par Netscape. Tous les navigateurs prenant en charge JavaScript utilisent désormais cette politique. La politique de même origine est la fonction de sécurité essentielle et la plus élémentaire du navigateur. Si la politique de même origine est manquante, les fonctions normales du navigateur peuvent être affectées. On peut dire que le Web est construit sur la base de la politique de même origine, et que le navigateur n'est qu'une implémentation de cette politique.

4. Pourquoi les navigateurs utilisent-ils la même politique d'origine ?

  • vise à assurer la sécurité des informations des utilisateurs et à empêcher les sites Web malveillants de voler des données. Si les pages Web ne répondent pas aux mêmes exigences d'origine, elles ne pourront pas :

    • 1. Cookies partagés, LocalStorage, IndexDB
    • 2. >
  • 3. Les requêtes AJAX ne peuvent pas être envoyées
    Le caractère non absolu de la politique de même origine : des balises avec des attributs src tels que
  • <script></script>
    <img/>
    <iframe/>
    <link/>
    <video/>
    <audio/>
    Copier après la connexion
peut être envoyé depuis différents domaines. Charger et exécuter des ressources. Politiques de même origine pour les autres plug-ins : les plug-ins tiers chargés par les navigateurs tels que Flash, l'applet Java, Silverlight et Google Gears ont également leurs propres politiques de même origine. Toutefois, ces politiques de même origine n'y appartiennent pas. aux politiques natives de même origine du navigateur. S'il y a des failles, elles peuvent être exploitées par des pirates informatiques, laissant les conséquences des attaques XSS

La soi-disant même origine signifie : le nom de domaine, le protocole réseau et le port. Le nombre est le même. Si l’un des trois est différent, un inter-domaine se produira. Par exemple : vous ouvrez

avec un navigateur, et lorsque le navigateur exécute le script JavaScript, il constate que le script envoie une requête au nom de domaine

. À ce moment, le navigateur signalera une erreur. une erreur inter-domaines.

http://baidu.comIl existe cinq solutions : http://cloud.baidu.com

1. Utiliser jsonp sur le front-end (non recommandé)

Lorsque nous demandons normalement des données JSON, le serveur renvoie est une chaîne de données de type JSON, et lorsque l'on utilise le mode JSONP pour demander des données, le serveur renvoie un code JavaScript exécutable. Parce que le principe inter-domaines de jsonp est de charger dynamiquement le src du script, nous ne pouvons transmettre les paramètres que via l'url, donc le type type de jsonp ne peut être obtenu qu'exemple :

    $.ajax({
        url: &#39;http://192.168.1.114/yii/demos/test.php&#39;, //不同的域
        type: &#39;GET&#39;, // jsonp模式只有GET 是合法的
        data: {
            &#39;action&#39;: &#39;aaron&#39;
        },
        dataType: &#39;jsonp&#39;, // 数据类型
        jsonp: &#39;backfunc&#39;, // 指定回调函数名,与服务器端接收的一致,并回传回来
    })
    Copier après la connexion
    <🎜. >
  • L'ensemble du processus de demande de données en mode JSONP : le client envoie une requête et spécifie un nom de fonction exécutable (ici, jQuery effectue le processus d'encapsulation, génère automatiquement une fonction de rappel pour vous et extrait les données pour la méthode d'attribut de réussite ) appel, au lieu de passer un handle de rappel), le serveur accepte le nom de la fonction backfunc, puis envoie les données sous forme de paramètres réels
    (dans le code source jquery, l'implémentation de jsonp est Ajoutez dynamiquement la balise
  • pour appeler le script js fourni par le serveur. jquery chargera une fonction globale dans l'objet window Lorsque le code
    est inséré, la fonction sera exécutée. > seront supprimées en même temps. Les requêtes non cross-domaines ont également été optimisées. Si la requête est sous le même nom de domaine, elle fonctionnera comme une requête Ajax normale)
  • <script>2. Transfert de demande HTTP en arrière-plan<🎜.><script><script>Utilisez le transfert HttpClinet pour le transfert (cette méthode n'est pas recommandée pour des exemples simples)
try {
    HttpClient client = HttpClients.createDefault();            //client对象
    HttpGet get = new HttpGet("http://localhost:8080/test");    //创建get请求
    CloseableHttpResponse response = httpClient.execute(get);   //执行get请求
    String mes = EntityUtils.toString(response.getEntity());    //将返回体的信息转换为字符串
    System.out.println(mes);
} catch (ClientProtocolException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
Copier après la connexion

3. Configurez les Cors de même origine en arrière-plan ( recommandé)

  • Pour une configuration inter-domaines sur SpringBoot2.0, utilisez la configuration de code suivante pour résoudre parfaitement vos problèmes de requêtes inter-domaines front-end et back-end

Pour la configuration inter-domaines sur SpringBoot2.0, utilisez la configuration de code suivante pour la résoudre parfaitement. Résolvez vos problèmes de requêtes inter-domaines front-end et back-end

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/**
 * 实现基本的跨域请求
 * @author linhongcun
 *
 */
@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter() {
        final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
        final CorsConfiguration corsConfiguration = new CorsConfiguration();
        /*是否允许请求带有验证信息*/
        corsConfiguration.setAllowCredentials(true);
        /*允许访问的客户端域名*/
        corsConfiguration.addAllowedOrigin("*");
        /*允许服务端访问的客户端请求头*/
        corsConfiguration.addAllowedHeader("*");
        /*允许访问的方法名,GET POST等*/
        corsConfiguration.addAllowedMethod("*");
        urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
        return new CorsFilter(urlBasedCorsConfigurationSource);
    }



}
Copier après la connexion
    4 Utilisez la passerelle SpringCloud
  • <. 🎜>
La passerelle de service (zuul), également connue sous le nom de centre de routage, est utilisée pour accéder uniformément à toutes les interfaces API et aux services de maintenance.

Spring Cloud Zuul réalise une maintenance automatisée des instances de service grâce à l'intégration avec Spring Cloud Eureka, donc lors de l'utilisation de la configuration du routage des services, nous n'avons pas besoin d'utiliser les méthodes de configuration de routage traditionnelles pour spécifier un service spécifique adresse de l'instance, utilisez simplement les paramètres du fichier de configuration du mode Ant

    5、使用nginx做转发

    • 现在有两个网站想互相访问接口 在http://a.a.com:81/A中想访问 http://b.b.com:81/B 那么进行如下配置即可
    • 然后通过访问 www.my.com/A 里面即可访问 www.my.com/B
    server {
            listen       80;
            server_name  www.my.com;
            location /A {
                proxy_pass  http://a.a.com:81/A;
                index  index.html index.htm;
            }
            location /B {
                proxy_pass  http://b.b.com:81/B;
                index  index.html index.htm;
            }
        }
    Copier après la connexion
    • 如果是两个端口想互相访问接口 在http://b.b.com:80/Api中想访问 http://b.b.com:81/Api 那么进行如下配置即可
    • 使用nginx转发机制就可以完成跨域问题
    server {
            listen       80;
            server_name  b.b.com;
            location /Api {
                proxy_pass  http://b.b.com:81/Api;
                index  index.html index.htm;
            }
        }
    Copier après la connexion

    希望本篇文章对你有所帮助。

    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 de ce site Web
    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

    Outils d'IA chauds

    Undresser.AI Undress

    Undresser.AI Undress

    Application basée sur l'IA pour créer des photos de nu réalistes

    AI Clothes Remover

    AI Clothes Remover

    Outil d'IA en ligne pour supprimer les vêtements des photos.

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    AI Hentai Generator

    AI Hentai Generator

    Générez AI Hentai gratuitement.

    Article chaud

    R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Meilleurs paramètres graphiques
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Comment réparer l'audio si vous n'entendez personne
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Comment déverrouiller tout dans Myrise
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

    Outils chauds

    Bloc-notes++7.3.1

    Bloc-notes++7.3.1

    Éditeur de code facile à utiliser et gratuit

    SublimeText3 version chinoise

    SublimeText3 version chinoise

    Version chinoise, très simple à utiliser

    Envoyer Studio 13.0.1

    Envoyer Studio 13.0.1

    Puissant environnement de développement intégré PHP

    Dreamweaver CS6

    Dreamweaver CS6

    Outils de développement Web visuel

    SublimeText3 version Mac

    SublimeText3 version Mac

    Logiciel d'édition de code au niveau de Dieu (SublimeText3)

    Comment résoudre l'erreur 403 rencontrée par la requête jQuery AJAX Comment résoudre l'erreur 403 rencontrée par la requête jQuery AJAX Feb 20, 2024 am 10:07 AM

    Titre : Méthodes et exemples de code pour résoudre les erreurs 403 dans les requêtes jQuery AJAX L'erreur 403 fait référence à une demande selon laquelle le serveur interdit l'accès à une ressource. Cette erreur se produit généralement parce que la demande manque d'autorisations ou est rejetée par le serveur. Lorsque vous effectuez des requêtes jQueryAJAX, vous rencontrez parfois cette situation. Cet article explique comment résoudre ce problème et fournit des exemples de code. Solution : Vérifiez les autorisations : assurez-vous d'abord que l'adresse URL demandée est correcte et vérifiez que vous disposez des autorisations suffisantes pour accéder à la ressource.

    Comment résoudre l'erreur 403 de la requête jQuery AJAX Comment résoudre l'erreur 403 de la requête jQuery AJAX Feb 19, 2024 pm 05:55 PM

    jQuery est une bibliothèque JavaScript populaire utilisée pour simplifier le développement côté client. AJAX est une technologie qui envoie des requêtes asynchrones et interagit avec le serveur sans recharger la page Web entière. Cependant, lorsque vous utilisez jQuery pour effectuer des requêtes AJAX, vous rencontrez parfois des erreurs 403. Les erreurs 403 sont généralement des erreurs d'accès refusé par le serveur, probablement en raison de problèmes de politique de sécurité ou d'autorisation. Dans cet article, nous verrons comment résoudre la requête jQueryAJAX rencontrant une erreur 403.

    Comprendre les scénarios d'application courants de redirection de pages Web et comprendre le code d'état HTTP 301 Comprendre les scénarios d'application courants de redirection de pages Web et comprendre le code d'état HTTP 301 Feb 18, 2024 pm 08:41 PM

    Comprendre la signification du code d'état HTTP 301 : scénarios d'application courants de redirection de pages Web Avec le développement rapide d'Internet, les exigences des utilisateurs en matière d'interaction avec les pages Web sont de plus en plus élevées. Dans le domaine de la conception Web, la redirection de pages Web est une technologie courante et importante, mise en œuvre via le code d'état HTTP 301. Cet article explorera la signification du code d'état HTTP 301 et les scénarios d'application courants dans la redirection de pages Web. Le code d'état HTTP 301 fait référence à une redirection permanente (PermanentRedirect). Lorsque le serveur reçoit le message du client

    Comment obtenir des variables de la méthode PHP en utilisant Ajax ? Comment obtenir des variables de la méthode PHP en utilisant Ajax ? Mar 09, 2024 pm 05:36 PM

    L'utilisation d'Ajax pour obtenir des variables à partir de méthodes PHP est un scénario courant dans le développement Web. Grâce à Ajax, la page peut être obtenue dynamiquement sans actualiser les données. Dans cet article, nous présenterons comment utiliser Ajax pour obtenir des variables à partir de méthodes PHP et fournirons des exemples de code spécifiques. Tout d’abord, nous devons écrire un fichier PHP pour gérer la requête Ajax et renvoyer les variables requises. Voici un exemple de code pour un simple fichier PHP getData.php :

    Comment résoudre le problème de l'erreur 403 jQuery AJAX ? Comment résoudre le problème de l'erreur 403 jQuery AJAX ? Feb 23, 2024 pm 04:27 PM

    Comment résoudre le problème de l’erreur 403 jQueryAJAX ? Lors du développement d'applications Web, jQuery est souvent utilisé pour envoyer des requêtes asynchrones. Cependant, vous pouvez parfois rencontrer le code d'erreur 403 lors de l'utilisation de jQueryAJAX, indiquant que l'accès est interdit par le serveur. Cela est généralement dû aux paramètres de sécurité côté serveur, mais il existe des moyens de résoudre le problème. Cet article explique comment résoudre le problème de l'erreur 403 jQueryAJAX et fournit des exemples de code spécifiques. 1. faire

    PHP et Ajax : créer un moteur de suggestions de saisie semi-automatique PHP et Ajax : créer un moteur de suggestions de saisie semi-automatique Jun 02, 2024 pm 08:39 PM

    Créez un moteur de suggestions de saisie semi-automatique en utilisant PHP et Ajax : Script côté serveur : gère les requêtes Ajax et renvoie des suggestions (autocomplete.php). Script client : envoyer une requête Ajax et afficher des suggestions (autocomplete.js). Cas pratique : Incluez le script dans la page HTML et spécifiez l'identifiant de l'élément d'entrée de recherche.

    Comment implémenter le streaming HTTP en utilisant C++ ? Comment implémenter le streaming HTTP en utilisant C++ ? May 31, 2024 am 11:06 AM

    Comment implémenter le streaming HTTP en C++ ? Créez un socket de flux SSL à l'aide de Boost.Asio et de la bibliothèque client asiohttps. Connectez-vous au serveur et envoyez une requête HTTP. Recevez les en-têtes de réponse HTTP et imprimez-les. Reçoit le corps de la réponse HTTP et l'imprime.

    Quel code d'état est renvoyé pour un délai d'expiration d'une requête HTTP ? Quel code d'état est renvoyé pour un délai d'expiration d'une requête HTTP ? Feb 18, 2024 pm 01:58 PM

    La requête HTTP expire et le serveur renvoie souvent le code d'état 504GatewayTimeout. Ce code d'état indique que lorsque le serveur exécute une requête, il ne parvient toujours pas à obtenir les ressources requises pour la requête ou à terminer le traitement de la requête après un certain temps. Il s'agit d'un code d'état de la série 5xx, qui indique que le serveur a rencontré un problème temporaire ou une surcharge, entraînant l'incapacité de traiter correctement la demande du client. Dans le protocole HTTP, divers codes d'état ont des significations et des utilisations spécifiques, et le code d'état 504 est utilisé pour indiquer les problèmes d'expiration du délai de demande. chez le client

    See all articles