fondo
Muchos de los proyectos que estamos haciendo ahora están separados de los extremos delanteros y traseros, lo que conduce a un problema muy común. Nuestras páginas e interfaces están bajo diferentes nombres de dominio. Cuando accedemos a la interfaz de backend a través de AJAX, surgen problemas de dominio cruzado. ¿Cómo podemos resolver este problema? En términos generales, hay dos soluciones: Cors y JSONP. Spring simplifica la configuración de CORS, echemos un vistazo a los COR que proporciona.
Descripción del problema de dominio cruzado
El desarrollo web a menudo encuentra problemas de dominio cruzado, y las soluciones incluyen: JSONP, iframe, CORS, etc.
Cors en comparación con JSONP:
1. JSONP solo puede implementar solicitudes GET, mientras que CORS admite todo tipo de solicitudes HTTP.
2. Usando CORS, los desarrolladores pueden usar XMLHTTPRequest ordinario para iniciar solicitudes y obtener datos, que tiene un mejor manejo de errores que JSONP.
3. JSONP es compatible principalmente por viejos navegadores. A menudo no admiten CORS, y la mayoría de los navegadores modernos ya apoyan a Cors.
Objeto webMVCCONFIGURER
Podemos inicializar un objeto WebMVCConfigurer para configurar nuestro mapeo CORS.
@ConfigurationPublic Class CorsCongInGuration {@Bean public WebMVCConfigurer CorsConfigurer () {return New WebMVCConfigurerAdapter () {@Override public void addCorsMappings (Registro de Corsregistry) {Registry.AddMapping ("/API/**"); // permitidoRigins ("http://domain2.com") // especifique el nombre de dominio de origen //. AlllowedMethods ("put", "delete") //. Alllowedheaders ("Header1", "Header2", "Header3") //. }}; }}Heredar webMVCConfigurerAdapter
Este método es muy similar al método anterior
@Configuration @enableWebMVCPublic Class CorsConfiguration_2 extiende WebMVCConfigurerAdapter {@Override public void addCorsMappings (Registro de Corsregistry) {Registry.AddMapping ("/API/**"); }}corsfilter
Este método rara vez se usa ahora
@Componente@habilitando la clase CorsfilterCongentiguration CorsfilterConguration extiende Corsfilter {public CorSfilterCongInGuration (corsconfigurationsource configSource) {super (configSource); } @Bean public FilterRegistrationBean Corsfilter () {URLBasedCorsConfigurationSource Source = new URLBasedCorsConfigurationSource (); CorsConfiguration config = new CorSconfiguration (); config.SetAllowCredentials (verdadero); config.addallowedorigin ("*"); // config.addallowedorigin ("http://domain1.com"); config.AddallowedHeader ("*"); config.addallowedmethod ("*"); Source.RegisterSconfiguration ("/API/**", config); FilterRegistrationBean Bean = new FilterRegistrationBean (nuevo Corsfilter (fuente)); bean.setOrder (0); // debe devolverse el frijol antes de todos los filtros; }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.