Cuando necesitamos proporcionar servicios al mundo exterior a través de la interfaz RESTFUL, si la arquitectura está separada de la parte delantera y trasera en este momento, implicará problemas de dominio cruzado. ¿Cómo resolver problemas de dominio cruzado? Discutamos este tema a continuación.
Solución 1: Agregar anotación @Crossorigin en el controlador
Cómo usarlo es el siguiente:
@Crossorigin // Método de anotación @RestController public Class HandLersCanCanTroller {@Crossorigin (todCredentials = "true", permitidoaders = "*", métodos = {requestMethod.get, requestmethod.post, requestmethod.delete, requestmethod.option Origins = "*") @PostMapping ("/confirmar") Handler de respuesta pública (@RequestBody Solic json) {return null; }} Solución 2: Configuración global
El código es el siguiente:
@Configuration Class public MyConfiguration {@Bean public WebMVCConfigurer CorsConfigurer () {return New WebMVCConfigurerAdapter () {@Override public Void AddCorsMappings (CorSregistry Registry) {Registry.AddMapping ("/**"). Allowcredentials (verdadero). }}; }} Solución 3: Use en combinación con el filtro
En la clase principal de Boot Spring, agregue un Corsfilter
/** * * Atención: las solicitudes simples de dominio cruzado son las solicitudes de Get, Head and Post, pero el "tipo de contenido" de la solicitud posterior solo puede ser la aplicación/X-www-form-urlencoded, multipart/formy-data o texto/simple * de lo contrario, no es un dominio cruzado simple. Existe un mecanismo previo al vuelo para este dominio cruzado. Para decirlo sin rodeos, emitirá dos solicitudes, una solicitud de opciones y una solicitud real*/ @bean public Corsfilter corsfilter () {URLBasedCorsCorsCorsConfigurationSource fuente = new URLBasedCorsConfigurationAsce (); Final CorSconfiguration config = new CorSconfiguration (); config.SetAllowCredentials (verdadero); // Permitir que las cookies se interroguen config.addallowedorigin ("*"); // #mantó el URI de solicitudes a este servidor, * significa todo permitido. En SpringMVC, si se establece en *, se convertirá automáticamente en Origin Config.AddallowedHeader (" *"); // #Add para acceder al encabezado, * significa todo config.setMaxage (18000l); // El tiempo de caché de las solicitudes previas (segundos), es decir, durante este período de tiempo, config.addallowedmethod ("opciones"); // métodos que permiten el envío de solicitudes, * significa que todos permiten config.addallowedmethod ("cabeza"); config.addallowedmethod ("get"); // permitir el método de solicitud de get config.addallowedmethod ("put"); config.addallowedmethod ("post"); config.addallowedmethod ("eliminar"); config.addallowedmethod ("parche"); Source.RegisterSconfiguration ("/**", config); devolver nuevo corsfilter (fuente); } Por supuesto, si hay muchos microservicios, debe agregar tal código a la clase principal de cada servicio, lo que viola el principio seco. Un mejor enfoque es resolver problemas de dominio cruzado en la capa de puerta de enlace de Zuul, de una vez por todas.
Para obtener más información sobre el intermedio frontal, consulte: http://www.vevb.com/article/83093.htm
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.