前端访问后端因为协议(http/https)、地址、端口号任意一个或多个不同会导致前后端数据和cookie无法发送接收。
解决办法:
1.解决跨域无法接收数据和cookie问题
后端开发过滤器
import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebFilter("/*") public class CORSFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { HttpServletResponse response = (HttpServletResponse) resp; //解决跨域访问的数据问题 HttpServletRequest request = (HttpServletRequest) req; String origin = request.getHeader("Origin"); response.setHeader("Access-Control-Allow-Origin",origin); //解决跨域访问的 cookie问题的(此时只解决了后端发送cookie的问题,前端还要配置解决跨域接受cookie的问题) response.setHeader("Access-Control-Allow-Credentials", "true"); chain.doFilter(req, resp); } public void init(FilterConfig config) throws ServletException { } }
前端ajax请求加xhrFields参数
表示前端接收保存后端传过来的cookie,准备下次访问带回给服务端。