Maison interface Web Questions et réponses frontales Comment gérer les problèmes inter-domaines lorsque Vue est en ligne

Comment gérer les problèmes inter-domaines lorsque Vue est en ligne

Apr 18, 2023 pm 02:11 PM

Lors du développement d'applications Vue, vous rencontrerez la séparation du front-end et du back-end, et vous pourrez rencontrer des problèmes inter-domaines. Les problèmes inter-domaines ne se produisent généralement pas lors du développement local, mais lorsque le projet est mis en ligne, si les frontaux et les back-ends sont déployés sur des serveurs différents, des problèmes inter-domaines se produiront. Dans cet article, nous aurons une compréhension approfondie du contexte et des solutions au problème inter-domaines de Vue en ligne afin de mieux gérer ce problème.

Qu’est-ce que le cross-domain ?

Cross-domain fait référence à l'utilisation de requêtes inter-domaines lors de l'accès aux ressources sur un serveur. Il existe de nombreux types de requêtes inter-domaines, les plus courantes incluent l'accès inter-domaines aux ressources, l'écriture de cookies inter-domaines, les interfaces d'appel inter-domaines, etc. Conformément à la politique de sécurité du navigateur, les requêtes inter-domaines sont interdites par défaut car les requêtes inter-domaines peuvent entraîner des risques de sécurité.

Résoudre le problème inter-domaines de Vue en ligne

1. Serveur proxy

Le serveur proxy transmet la requête au serveur où se trouve l'interface lorsque le front-end demande l'interface en arrière-plan et utilise l'adresse du proxy. serveur comme chemin de requête dans le code frontal. Assurez-vous que la requête est traitée normalement. À l'aide d'un serveur proxy, le frontal peut transmettre les requêtes à l'interface, proxy le contenu renvoyé par l'interface back-end, modifier le contenu renvoyé et ajouter des paramètres de modification ou une logique de traitement avant et après la requête. La plupart des serveurs proxy sont écrits par le personnel back-end et peuvent être appelés par des projets front-end.

Il existe de nombreux types de serveurs proxy, tels que Nginx, Alibaba Cloud API Gateway, Apache, etc. Lorsque le projet Vue est mis en ligne, utilisez un serveur proxy pour pointer les chemins d'accès de toutes les interfaces vers le même nom de domaine. Par exemple, redirigez tous les chemins de requête d'interface vers "/api" et utilisez "/api" comme chemin de requête. Définissez ensuite une règle de transfert sur le serveur proxy pour transférer les requêtes commençant par "/api" vers le serveur où se trouve l'interface backend afin de résoudre le problème inter-domaines.

Configurez le serveur proxy dans le projet Vue :

//vue.config.js
module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:8080',
        changeOrigin: true, //是否跨域
        pathRewrite: {
          '^/api': '/'
        }
      },
    }
  }
}
Copier après la connexion

2.jsonp

JSONP est une solution pour JavaScript et les requêtes inter-domaines. Le client envoie la requête au serveur en créant dynamiquement la balise <script>, en ajoutant l'URL demandée (adresse de l'interface) et la fonction de rappel en paramètres. Une fois que le serveur a accepté la demande, il renvoie un script JavaScript, une fonction de rappel et transporte les données requises. Enfin, le client traite les données renvoyées dans la fonction de rappel. JSONP est une solution interdomaine plus flexible, mais elle ne peut prendre en charge que les requêtes GET et ne peut demander des données qu'au format texte brut.

Utilisation de JSONP dans les projets Vue :

this.$jsonp('http://api.jisuapi.com/weather/query', { //jsonp函数可以使用axios+jsonp的方式实现
    city: '上海',
    appkey: 'your appkey'
  }, (data) => {
    console.log(data)
  })
Copier après la connexion

3.CORS

CORS (Cross-Origin Resource Sharing) est une solution officielle pour les requêtes inter-domaines, qui permet aux serveurs d'applications Web d'effectuer un contrôle d'accès inter-domaines, rendant ainsi la navigation Le serveur termine les requêtes inter-domaines en toute sécurité. Pour utiliser CORS, il vous suffit d'ajouter le champ Access-Control-Allow-Origin aux informations d'en-tête de réponse en arrière-plan et de le définir sur « * » ou sur le nom de domaine spécifié. Le navigateur le traitera ensuite en fonction de l'en-tête de réponse. informations, afin de résoudre le problème de demande de domaine transfrontalier.

Ajoutez des informations d'en-tête de réponse en arrière-plan :

//以Java Web服务为例,增加响应头信息
response.setHeader("Access-Control-Allow-Origin", "*");//允许跨域
Copier après la connexion
  1. WebSocket

WebSocket est un protocole de communication full-duplex qui joue un bon rôle dans la résolution des requêtes inter-domaines. WebSocket effectue une négociation via le protocole HTTP et, une fois la connexion créée, les données peuvent être transférées dans les deux sens entre le client et le serveur.

Utilisation de WebSocket dans les projets Vue :

var ws = new WebSocket('ws://localhost:8080');
ws.onopen = function() {
  ws.send('发送消息到服务器');
};
ws.onmessage = function(event) {
  console.log('从服务器接受到 ', event.data);
}
Copier après la connexion

Résumé

Les quatre méthodes ci-dessus permettent de résoudre le problème inter-domaines de Vue en ligne : serveur proxy, JSONP, CORS et WebSocket. Différents scénarios et le choix de différentes solutions peuvent nous aider à mieux résoudre les problèmes inter-domaines lorsque Vue est mis en ligne et à rendre nos projets plus fluides. Il convient de rappeler que lorsque vous utilisez les méthodes ci-dessus, vous devez faire attention à la sécurité pour assurer le bon lancement du projet.

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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

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)

Qu'est-ce que l'utilisation Effecte? Comment l'utilisez-vous pour effectuer des effets secondaires? Qu'est-ce que l'utilisation Effecte? Comment l'utilisez-vous pour effectuer des effets secondaires? Mar 19, 2025 pm 03:58 PM

Qu'est-ce que l'utilisation Effecte? Comment l'utilisez-vous pour effectuer des effets secondaires?

Expliquez le concept de chargement paresseux. Expliquez le concept de chargement paresseux. Mar 13, 2025 pm 07:47 PM

Expliquez le concept de chargement paresseux.

Comment fonctionne le currying en JavaScript et quels sont ses avantages? Comment fonctionne le currying en JavaScript et quels sont ses avantages? Mar 18, 2025 pm 01:45 PM

Comment fonctionne le currying en JavaScript et quels sont ses avantages?

Comment empêchez-vous le comportement par défaut dans les gestionnaires d'événements? Comment empêchez-vous le comportement par défaut dans les gestionnaires d'événements? Mar 19, 2025 pm 04:10 PM

Comment empêchez-vous le comportement par défaut dans les gestionnaires d'événements?

Quelles sont les fonctions d'ordre supérieur en JavaScript, et comment peuvent-ils être utilisés pour écrire du code plus concis et réutilisable? Quelles sont les fonctions d'ordre supérieur en JavaScript, et comment peuvent-ils être utilisés pour écrire du code plus concis et réutilisable? Mar 18, 2025 pm 01:44 PM

Quelles sont les fonctions d'ordre supérieur en JavaScript, et comment peuvent-ils être utilisés pour écrire du code plus concis et réutilisable?

Comment fonctionne l'algorithme de réconciliation React? Comment fonctionne l'algorithme de réconciliation React? Mar 18, 2025 pm 01:58 PM

Comment fonctionne l'algorithme de réconciliation React?

Qu'est-ce que UseContext? Comment l'utilisez-vous pour partager l'état entre les composants? Qu'est-ce que UseContext? Comment l'utilisez-vous pour partager l'état entre les composants? Mar 19, 2025 pm 03:59 PM

Qu'est-ce que UseContext? Comment l'utilisez-vous pour partager l'état entre les composants?

Quels sont les avantages et les inconvénients des composants contrôlés et incontrôlés? Quels sont les avantages et les inconvénients des composants contrôlés et incontrôlés? Mar 19, 2025 pm 04:16 PM

Quels sont les avantages et les inconvénients des composants contrôlés et incontrôlés?

See all articles