前后端分离,解决AJAX跨域问题

直接进入主题:

解决方案一、

SpringBoot项目需要写一个过滤器,配置Response响应头

第一步、

/**
 * 说明:跨域访问处理
 * 作者:fei
 * 
 */
@Component
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 {

		HttpServletRequest request = (HttpServletRequest) servletRequest;
		HttpServletResponse response = (HttpServletResponse) servletResponse;
		response.setContentType("textml;charset=UTF-8");
		response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
		response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
		response.setHeader("Access-Control-Max-Age", "0");
		response.setHeader("Access-Control-Allow-Headers","Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");
		response.setHeader("Access-Control-Allow-Credentials", "true"); // 是否支持cookie跨域        
		response.setHeader("XDomainRequestAllowed", "1");
		response.setHeader("Set-Cookie", "HttpOnly;Secure;SameSite=None");
		filterChain.doFilter(servletRequest, servletResponse);

	}

	@Override
	public void destroy() {

	}
}

        上面的配置好的类可以直接拿来用

第二步、

        可以新建一个类,当作bean的工具类

        这个类用来注册Bean

@Configuration 
@EnableCaching
public class CacheConfig{
	
    @Autowired
	private CORSFilter corsFilter;

	@Bean
	public FilterRegistrationBean registerAuthFilter() {
		FilterRegistrationBean registration = new FilterRegistrationBean();
		registration.setFilter(corsFilter);
		registration.addUrlPatterns("/*");
		registration.setName("authFilter");
		//值越小,Filter越靠前
		registration.setOrder(1);
		return registration;
	}
}

第三步、

AJAX加一个参数

               xhrFields: { withCredentials: true  }

以上就是解决AJAX跨域问题方案之一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值