Heim > Java > javaLernprogramm > Tipps zur Spring Boot-Implementierung und zur Lösung domänenübergreifender Probleme

Tipps zur Spring Boot-Implementierung und zur Lösung domänenübergreifender Probleme

王林
Freigeben: 2023-06-22 21:38:28
Original
1820 Leute haben es durchsucht

Mit der Popularität der Front-End- und Back-End-Trennung ist das domänenübergreifende Problem zwischen Front-End und Back-End nach und nach zu einem Problem für Webentwickler geworden. Bei domänenübergreifenden Problemen kommt es auf die Same-Origin-Richtlinie des Browsers an. Das bedeutet, dass der Browser standardmäßig nur zulässt, dass Seiten Anfragen an Server desselben Ursprungs initiieren, nicht jedoch an Server mit anderen Domänennamen. In diesem Artikel wird erläutert, wie Sie mit dem Spring Boot-Framework domänenübergreifende Probleme implementieren und lösen.

  1. Was ist ein domänenübergreifendes Problem?

Domänenübergreifendes Problem bedeutet, dass im Browser, wenn eine Webanwendung, die unter Domänenname A ausgeführt wird, eine Anfrage an eine Webanwendung unter Domänenname B sendet, der Browser die Anfrage blockiert, da sie nicht dem gleichen Ursprung entspricht die Browser-Richtlinienbestimmungen. Die Same-Origin-Richtlinie bedeutet, dass der Browser nur dann zulässt, dass Seiten Anfragen an den Server initiieren, wenn sie dasselbe Protokoll, denselben Domänennamen und dieselbe Portnummer haben.

  1. Von Spring Boot unterstützte domänenübergreifende Lösungen

Spring Boot bietet eine Vielzahl von Methoden zur Lösung domänenübergreifender Probleme. Hier sind einige der gängigsten Methoden.

2.1 Verwenden Sie die Annotation @CrossOrigin

In Spring Boot können Sie die Annotation @CrossOrigin verwenden, um domänenübergreifende Anforderungen zu implementieren. Die Annotation @CrossOrigin kann auf Klassen- oder Methodenebene verwendet werden und einige Optionen für CORS angeben, z. B. für den domänenübergreifenden Zugriff zulässige Domänennamen, zulässige Anforderungsmethoden usw. Das Folgende ist ein Beispielcode, der die Annotation @CrossOrigin verwendet:

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

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

Im obigen Code wird die Annotation @CrossOrigin verwendet und der domänenübergreifende Domänenname als http://localhost:8080 angegeben, und die maximale Cache-Zeit beträgt auf 1 Stunde eingestellt. Auf diese Weise können Sie bei einer Front-End-Ajax-Anfrage domänenübergreifend auf http://localhost:8080 zugreifen. Es ist zu beachten, dass die Annotation @CrossOrigin zur Controller-Klasse oder -Methode und nicht zum Parameter @RequestBody hinzugefügt werden sollte.

2.2 WebMvcConfigurer konfigurieren

Eine andere Möglichkeit, das domänenübergreifende Problem zu lösen, besteht darin, die WebMvcConfigurer-Schnittstelle zu implementieren, die addCorsMappings-Methode zu überschreiben und CorsRegistry zu verwenden, um Domänennamen zu konfigurieren, die domänenübergreifenden Zugriff ermöglichen. Das Folgende ist ein Beispielcode:

@Configuration
public class CorsConfig implements WebMvcConfigurer {

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

Im obigen Code implementiert die CorsConfig-Klasse die WebMvcConfigurer-Schnittstelle und deckt die addCorsMappings-Methode ab, sodass nur GET- und POST-Anforderungszugriff unter dem Domänennamen http://localhost:8080 möglich ist. Pfade, die „/api“ enthalten, unterliegen CORS-Einschränkungen, während für andere Pfade keine Einschränkungen gelten.

2.3 Filter konfigurieren

Die Verwendung von Filtern ist auch eine Möglichkeit, domänenübergreifende Probleme zu lösen. Das Folgende ist ein Beispiel für die Verwendung von Filtern:

@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);
    }
}
Nach dem Login kopieren

Im obigen Code implementiert die CorsFilter-Klasse die Filter-Schnittstelle und fügt Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Max-Age hinzu, usw. Fordern Sie Header-Informationen an, die den Zugriff auf GET- und POST-Anfragen unter dem Domänennamen http://localhost:8080 ermöglichen.

  1. Zusammenfassung

In diesem Artikel werden drei gängige Methoden zum Implementieren und Lösen domänenübergreifender Probleme mithilfe des Spring Boot-Frameworks vorgestellt. CORS-Einschränkungen und -Kontrollen können durch die Verwendung der Annotation @CrossOrigin, die Konfiguration von WebMvcConfigurer und die Verwendung von Filtern erreicht werden. In der tatsächlichen Entwicklung sollten Sie die am besten geeignete Methode zur Lösung domänenübergreifender Probleme entsprechend Ihren eigenen Anforderungen auswählen.

Das obige ist der detaillierte Inhalt vonTipps zur Spring Boot-Implementierung und zur Lösung domänenübergreifender Probleme. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage