Maison  >  Article  >  Java  >  Conseils pour la mise en œuvre de Spring Boot et la résolution des problèmes inter-domaines

Conseils pour la mise en œuvre de Spring Boot et la résolution des problèmes inter-domaines

王林
王林original
2023-06-22 21:38:281700parcourir

Avec la popularité de la séparation front-end et back-end, le problème inter-domaines entre front-end et back-end est progressivement devenu un problème auquel sont confrontés les développeurs Web. Les problèmes inter-domaines impliquent la politique de même origine du navigateur, c'est-à-dire que par défaut, le navigateur autorise uniquement les pages à lancer des requêtes vers des serveurs de même origine, mais pas vers des serveurs avec d'autres noms de domaine. Cet article explique comment utiliser le framework Spring Boot pour implémenter et résoudre des problèmes inter-domaines.

  1. Qu'est-ce qu'un problème inter-domaines ?

Le problème inter-domaines signifie que dans le navigateur, lorsqu'une application web exécutée sous le nom de domaine A envoie une requête à une application web sous le nom de domaine B, le navigateur bloquera la requête , car cela n'est pas conforme à la politique de même origine du navigateur. La politique de même origine signifie que le navigateur autorise uniquement les pages à lancer des requêtes vers le serveur si elles ont le même protocole, le même nom de domaine et le même numéro de port.

  1. Spring Boot prend en charge les solutions inter-domaines

Spring Boot fournit une variété de méthodes pour résoudre les problèmes inter-domaines. Voici quelques comparaisons. méthodes utilisées.

2.1 Utilisez l'annotation @CrossOrigin

Dans Spring Boot, vous pouvez utiliser l'annotation @CrossOrigin pour implémenter des requêtes inter-domaines. L'annotation @CrossOrigin peut être utilisée au niveau de la classe ou de la méthode et peut spécifier certaines options pour CORS, telles que les noms de domaine autorisés pour l'accès entre domaines, les méthodes de requête autorisées, etc. Voici un exemple de code utilisant l'annotation @CrossOrigin :

@RestController
@RequestMapping("/api")
@CrossOrigin(origins = "http://localhost:8080", maxAge = 3600)
public class ApiController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello World!";
    }
}

Dans le code ci-dessus, l'annotation @CrossOrigin est utilisée et le nom de domaine inter-domaines est spécifié comme http://localhost:8080, et le cache le plus long est défini. L'heure est de 1 heure. De cette façon, lorsque vous effectuez une requête Ajax frontale, vous pouvez accéder à http://localhost:8080 sur tous les domaines. Il convient de noter que l'annotation @CrossOrigin doit être ajoutée à la classe ou à la méthode du contrôleur, et non au paramètre @RequestBody.

2.2 Configurer WebMvcConfigurer

Une autre façon de résoudre le problème inter-domaines consiste à implémenter l'interface WebMvcConfigurer, à remplacer la méthode addCorsMappings et à utiliser CorsRegistry pour configurer les noms de domaine qui autorisent les connexions croisées. -accès au domaine. Voici un exemple de code :

@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
                .allowedOrigins("http://localhost:8080")
                .allowedMethods("GET", "POST")
                .maxAge(3600);
    }
}

Dans le code ci-dessus, la classe CorsConfig implémente l'interface WebMvcConfigurer et couvre la méthode addCorsMappings, autorisant uniquement l'accès aux requêtes GET et POST sous http://localhost:8080 nom de domaine. Les chemins contenant "/api" seront soumis aux restrictions CORS, tandis que les autres chemins n'auront aucune restriction.

2.3 Configurer le filtre

L'utilisation de filtres est également un moyen de résoudre des problèmes inter-domaines. Voici un exemple d'utilisation de filtres :

@Component
public class CorsFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws ServletException, IOException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "http://localhost:8080");
        response.setHeader("Access-Control-Allow-Methods", "GET, POST");
        response.setHeader("Access-Control-Max-Age", "3600");
        chain.doFilter(req, res);
    }
}

Dans le code ci-dessus, la classe CorsFilter implémente l'interface Filter et ajoute Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access- Control-Max-Age et d'autres informations d'en-tête de requête permettent l'accès aux requêtes GET et POST sous le nom de domaine http://localhost:8080.

  1. Summary

Cet article présente trois méthodes courantes pour utiliser le framework Spring Boot pour implémenter et résoudre des problèmes inter-domaines. Les restrictions et contrôles CORS peuvent être obtenus en utilisant l'annotation @CrossOrigin, en configurant WebMvcConfigurer et en utilisant des filtres. Dans le développement réel, vous devez choisir la méthode la plus appropriée pour résoudre les problèmes inter-domaines en fonction de vos propres besoins.

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