arrière-plan
De nombreux projets que nous réalisons sont maintenant séparés des avant et de l'arrière, ce qui conduit à un problème très courant. Nos pages et interfaces sont sous différents noms de domaine. Lorsque nous accéderons à l'interface backend via AJAX, des problèmes interdomains se posent. Comment pouvons-nous résoudre ce problème? D'une manière générale, il existe deux solutions: CORS et JSONP. Spring simplifie la configuration des COR, jetons un coup d'œil aux COR qu'il fournit.
Description du problème du domaine croisé
Le développement Web rencontre souvent des problèmes de domaine croisé, et les solutions incluent: JSONP, IFRAME, CORS, etc.
CORS par rapport à JSONP:
1. JSONP ne peut implémenter que les demandes GET, tandis que CORS prend en charge tous les types de demandes HTTP.
2. À l'aide de COR, les développeurs peuvent utiliser XMLHTTPRequest ordinaire pour lancer des demandes et obtenir des données, qui ont une meilleure gestion des erreurs que JSONP.
3. JSONP est principalement soutenu par les anciens navigateurs. Ils ne soutiennent souvent pas les COR et la plupart des navigateurs modernes soutiennent déjà les COR.
Objet webmvcconfigurer
Nous pouvons initialiser un objet WebMvcConfigurer pour configurer notre mappage CORS.
@ConfigurationPublic class CorscongIGIGURAGE {@Bean public webmvcConfigurer CorsConfigurer () {return new webMvcConfiGureAdapter () {@Override public void addCorsMappings (Corsregistry Registry) {registry.adddmapping ("/ api / **"); // ALLIMESSORIGINS ("http://domain2.com") // spécifiez le nom de domaine source // .AllowEdMethods ("put", "Delete") // .Allowedheders ("header1", "header2", "header3") // .exposedheders ("header1", "header2") // .AllowCredentials (false) .maxage (3600); }}; }}Hériter webmvcconfigurerAdapter
Cette méthode est très similaire à la méthode ci-dessus
@ Configuration @ activerwebmvcpublic class CorsConfiguration_2 étend webmvcconfigurerAdapter {@Override public void addCorsMappings (Corsegistry Registry) {registry.addmapping ("/ api / **"); }}corson
Cette méthode est rarement utilisée maintenant
@ Composant @ activerwebmvcpublic classe CorsFilterCongiguration étend CorsFilter {public corsFilterCongigring (CorsConfigurationsource configSource) {super (configSource); } @Bean Public FilterRegistrationBean CorsFilter () {UrlBasedCorsConfigurationsource Source = new UrlBasedCorsConfigurationsource (); CorsConfiguration config = new CorsConfiguration (); config.setallowCredentials (true); config.addallowedorigin ("*"); // config.addallowedorigin ("http://domain1.com"); config.addallowedHeader ("*"); config.addallowedMethod ("*"); source.RegisterCorsConfiguration ("/ api / **", config); FilterRegistrationBean Bean = Nouveau filterRegistrationBean (nouveau corsfilter (source)); bean.setorder (0); // doit être retourné au haricot avant tous les filtres; }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.