Resuelva el problema de que el navegador puede obtener los datos directamente, pero la publicación ajax no puede

análisis

  1. 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 ...
  1. Y la obtención directa tiene datos, lo que indica que el servidor es normal.
  2. 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
  3. 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
  4. 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.
  5. 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.xxxEs http://xxx.xxx.xxx.xxx:80diferente del navegador. Si su puerto de front-end es el puerto 80, no http://xxx.xxx.xxx.xxxagregue el puerto 80 detrás, utilícelo directamentehttp://xxx.xxx.xxx.xxx

Supongo que te gusta

Origin blog.csdn.net/qq_41490274/article/details/100561308
Recomendado
Clasificación