前端访问后端因为协议(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,准备下次访问带回给服务端。