fundo
Muitos dos projetos que estamos realizando agora estão separados das extremidades da frente e de trás, o que leva a um problema muito comum. Nossas páginas e interfaces estão sob diferentes nomes de domínio. Quando acessarmos a interface de back-end através do AJAX, surgirão problemas de domínio cruzado. Como podemos resolver esse problema? De um modo geral, existem duas soluções: CORS e JSONP. A primavera simplifica a configuração dos CORS, vamos dar uma olhada no CORS que ele fornece.
Descrição do problema cruzado
O desenvolvimento da Web geralmente encontra problemas de domínio cruzado e as soluções incluem: JSONP, IFRAME, CORS, etc.
CORS em comparação com JSONP:
1. O JSONP só pode implementar solicitações GET, enquanto o CORS suporta todos os tipos de solicitações HTTP.
2. Usando CORS, os desenvolvedores podem usar o xmlHttPrequest comum para iniciar solicitações e obter dados, que têm melhor manuseio de erros que o JSONP.
3. O JSONP é apoiado principalmente por navegadores antigos. Eles geralmente não suportam CORS, e a maioria dos navegadores modernos já suporta os CORS.
Objeto webmvcconfigurer
Podemos inicializar um objeto WebMVCConfigurer para configurar nosso mapeamento CORS.
@ConfigurationPublic CLASS CORSCONGURAÇÃO {@Bean public webmvcconfigurer corsConfigurer () {return new webmvcConfigureRAdApter () {@Override publicVoid AddCorsMappings (CORSRegistry) {Registry.addmapping ("/API/**; // Permisselorigins ("http://domain2.com") // Especifique o nome do domínio da origem // .AlowEdMethods ("put", "delete") // .AlowEdHeaders ("header1", "header2", "header3") // .exposedHeaders ("header1", "headr2", " }}; }}Herdar webmvcConfigureRAdapter
Este método é muito semelhante ao método acima
@Configuration @EnableWebMvcpublic Class corsConfiguration_2 estende WebMVCConfigureRAdApter {@Override public void AddCorsMappings (CORSROCISTRY Registry) {Registry.addmapp ("/API/**"); }}corsfilter
Este método raramente é usado agora
@Componente@enablewebmvcpublic CLASS CORSFILTERCONGIGURAÇÃO Estende o corsfilter {public corsfilterCongIGuration (corsConfigurationsource configSource) {super (configSource); } @Bean public filterRegistrationBean corsfilter () {urlBasedCorsConFigurações ou fonte = novo urlBasedCorsConfigurationsource (); CorsConfiguration config = new corsConfiguration (); config.setLlowCredentials (true); config.addallowedorigin ("*"); // config.addallowedorigin ("http://domain1.com"); config.addallowedheader ("*"); config.addallowedmethod ("*"); fonte.ReGisterCorsConfiguration ("/api/**", config); FilterRegistrationBean Bean = new FilterRegistrationBean (New Corsfilter (fonte)); bean.setorder (0); // deve ser devolvido Bean antes de todos os filtros; }}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.