我的项目是前后端分离,后端是Springboot,前端是Vue。测试的时候由于用了Springboot内置的tomcat和vue内置的nodejs服务,没有出现跨域问题,cookie和session也可以传。但是到了线上环境,就出现了跨域问题,cookie和session_id也无法保存到浏览器里。花了很长时间debug。终于解决了,希望对同行有帮助。
我的线上环境是:vue打dist包到,用nginx代理。springboot打war包,挂在独立的tomcat的webapps文件夹里,然后也用nginx反向代理。
首先springboot里写一个filter。
package com.manen.emall.config;
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class CORSFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
httpResponse.addHeader("Access-Control-Allow-Origin&#