análisis
- Abra la consola y busque este mensaje de error:
ha sido bloqueado por la política de CORS: El encabezado 'Access-Control-Allow-Origin' co ...
- Y la obtención directa tiene datos, lo que indica que el servidor es normal.
- Use el navegador f12 para capturar paquetes y descubra que la solicitud asíncrona ajax del navegador no obtiene los datos JSON de la respuesta del servidor
- Con el parámetro copy ajax asynchronous request address, colóquelo directamente en el navegador y presione Enter. Se encontró que los datos json fueron respondidos exitosamente
- Usando un violinista profesional para capturar el paquete, descubrí que el servidor de solicitud de publicación asíncrona ajax respondió a los datos json, pero no en el navegador.
- Se puede concluir que el navegador bloqueó los datos de respuesta del servidor.
Solución
doFilter()
Configure el encabezado de respuesta en el filtro del lado del servidor para resolver el problema de datos del navegador que protege las respuestas de solicitud entre dominios
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpServletRequest request = (HttpServletRequest) servletRequest;
//http://xxx.xxx.xxx.xxx是你的前端地址 不是80端口有端口请设置端口http://xxx.xxx.xxx.xxx:端口号
response.setHeader("Access-Control-Allow-Origin","http://xxx.xxx.xxx.xxx");
response.setHeader("Access-Control-Allow-Credentials","true");
filterChain.doFilter(request, response);
Nota
http://xxx.xxx.xxx.xxx
Es http://xxx.xxx.xxx.xxx:80
diferente del navegador. Si su puerto de front-end es el puerto 80, no http://xxx.xxx.xxx.xxx
agregue el puerto 80 detrás, utilícelo directamentehttp://xxx.xxx.xxx.xxx