Configuración entre dominios de SpringMvc CORS
Para obtener una introducción a CORS, consulte el artículo Intercambio de recursos entre orígenes (CORS).
CORS funciona agregando nuevos encabezados HTTP para permitir que el servidor describa qué fuentes de solicitud pueden acceder a los recursos. Para las solicitudes que pueden tener un impacto adverso en el servidor, la especificación estipula que el navegador debe enviar primero una solicitud de "vista previa" (es decir, una solicitud de opción) y luego enviar la solicitud real después de que pase la solicitud de vista previa. El servidor también puede informar al cliente si se deben enviar "credenciales" (como cookies y autenticación HTTP) con la solicitud. Para obtener una introducción más detallada, consulte el artículo anterior. Este artículo analiza principalmente el soporte de Spring Mvc para CORS.
Cabe destacar:
No es necesario enviar una solicitud "previa al vuelo".
Como puede ver, puede marcar la anotación @CrossOrigin en una clase o método, y varias constantes como DEFAULT_ORIGINS han quedado obsoletas en Spring 5.0, reemplazadas por el método de configuración CORS #applypermitdefaultvalues.
Marcado en una clase, todos los métodos de la clase tendrán efecto.
Al mismo tiempo, las clases y los métodos también se pueden utilizar juntos.
La anotación @CrossOrigin es más adecuada para un control detallado entre dominios. Para el control global entre dominios, Spring Mvc proporciona configuración de configuración global.
Spring Mvc es relativamente simple para CORS global y se divide en dos soluciones.
Cree la clase WebConfig para implementar la interfaz WebMvcConfigurer y configure información entre dominios a través de CorsRegistry.
Establezca información entre dominios a través de CorsConfiguration y pásela a través del constructor CorsFilter.
Se puede decir que Spring Mvc es muy conveniente para CORS. El objetivo principal de este artículo es permitir que los desarrolladores tengan una comprensión general del significado de dominio cruzado y cada parámetro, en lugar de establecerlo en "*" en todos los proyectos, y considerar las necesidades reales y la seguridad de sus propios proyectos. prevenir accidentes de producción.