Resolva o problema de que o navegador pode obter os dados diretamente, mas o post ajax não

análise

  1. Abra o console e encontre esta mensagem de erro:
foi bloqueado pela política CORS: O cabeçalho 'Access-Control-Allow-Origin' co…
  1. E a obtenção direta tem dados, indicando que o servidor está normal
  2. Use o navegador f12 para capturar pacotes e descobrir que a solicitação assíncrona ajax do navegador não obtém os dados JSON da resposta do servidor
  3. Com o parâmetro copy ajax assynchronous request address, coloque-o diretamente no navegador e pressione Enter. Constatou-se que os dados json foram respondidos com sucesso
  4. Usando um violinista profissional para capturar o pacote, descobri que o servidor de solicitação de postagem assíncrona ajax respondeu aos dados json, mas não no navegador.
  5. Pode-se concluir que o navegador bloqueou os dados de resposta do servidor
Solução

doFilter()Defina o cabeçalho de resposta no filtro do lado do servidor para resolver o problema de dados do navegador que protege as respostas de solicitação de domínio cruzado

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É http://xxx.xxx.xxx.xxx:80diferente do navegador. Se sua porta front-end for a porta 80, não http://xxx.xxx.xxx.xxxadicione a porta 80 atrás, use-a diretamentehttp://xxx.xxx.xxx.xxx

Acho que você gosta

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