Comment résoudre le problème d'accès inter-domaines dans le développement Java
Dans le développement actuel d'applications Web, la tendance à la séparation front-end et back-end devient de plus en plus évidente. Cela signifie que le code front-end et back-end est géré par des équipes de développement différentes et qu'il s'exécute généralement sur des serveurs différents. Cependant, en raison des politiques de sécurité du navigateur, l'accès entre domaines sera restreint. L'accès inter-domaines fait référence à la demande de ressources sous un autre nom de domaine à partir d'une page Web sous un nom de domaine, par exemple la demande de données à api.example.com à partir d'une page sur www.example.com.
Les développeurs Java rencontrent souvent ce problème au cours du processus de développement : lorsque le code front-end s'exécute sous un nom de domaine et que l'interface back-end s'exécute sous un autre nom de domaine, comment résoudre le problème de l'accès inter-domaines ? Cet article présentera plusieurs solutions couramment utilisées.
1. Autoriser l'accès entre domaines via les paramètres du serveur
Il s'agit de la méthode la plus courante pour résoudre les problèmes entre domaines. Les problèmes inter-domaines peuvent être résolus en configurant sur le serveur principal pour autoriser les noms de domaine ou les adresses IP spécifiés à accéder à l'interface. Par exemple, en Java, vous pouvez définir les noms de domaine autorisés en ajoutant l'annotation suivante sur la classe Controller :
@CrossOrigin(origins = "http://www.example.com")
De cette façon, le front -la page de fin d'accès à l'interface back-end ne sera plus soumise aux restrictions inter-domaines.
2. Utilisez JSONP (JSON with Padding)
JSONP est une solution d'accès inter-domaines simple à utiliser. Il crée une balise de script dans la page front-end, pointe vers l'interface back-end, puis encapsule les données renvoyées dans un appel de fonction dans le back-end. Par exemple, la page front-end peut appeler l'interface back-end comme ceci :
3f1c4e4b6b16bbbd69b2ee476dc4f83a
function callback(data){ //处理返回的数据 }
2cacc6d41bbb37262a98f745aa00fbf0
7e8be25ad00935274f3e069cfc2d5c8b 2cacc6d41bbb37262a98f745aa00fbf0
À ce stade, les données renvoyées par le backend seront enveloppées dans la fonction de rappel et la page frontale pourra obtenir les données via la fonction de rappel.
3. Utilisez un serveur proxy
Une autre façon courante de résoudre les problèmes inter-domaines consiste à utiliser un serveur proxy. En ajoutant un serveur proxy au projet, les requêtes de la page front-end sont transmises au nom de domaine de l'interface back-end. De cette manière, la page front-end peut communiquer avec le back-end via le serveur proxy sous le même nom de domaine, évitant ainsi les problèmes inter-domaines. Les serveurs proxy courants incluent Nginx et Apache.
4. Générez des en-têtes de réponse de partage de ressources inter-domaines (CORS) sur le backend
CORS est un nouveau mécanisme HTML5 pour résoudre les problèmes d'accès entre domaines. En générant un en-tête de réponse CORS sur le backend, vous indiquez au navigateur que l'interface est accessible par le nom de domaine spécifié. En Java, vous pouvez générer l'en-tête de réponse CORS en ajoutant l'annotation suivante à la méthode d'interface backend :
@CrossOrigin(origins = "http://www.example.com")
5 Utilisez le protocole WebSocket
WebSocket. protocole Il s'agit d'un protocole de communication bidirectionnelle sur une seule connexion à long terme. Il peut contourner la politique de même origine du navigateur et obtenir un accès inter-domaines. Il existe de nombreux frameworks WebSocket matures en Java, tels que l'implémentation WebSocket de Netty et Tomcat.
Résumé :
Il existe de nombreuses façons de résoudre les problèmes d'accès entre domaines dans le développement Java. Nous pouvons choisir la solution appropriée en fonction de la situation spécifique. Grâce aux paramètres du serveur, aux protocoles JSONP, serveur proxy, CORS et WebSocket, nous pouvons résoudre le problème d'accès inter-domaines dans le développement de la séparation front-end et back-end et améliorer la sécurité et la fiabilité des applications.
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!