网站建设资讯

NEWS

网站建设资讯

SpringMVC中处理ajax请求的跨域问题与注意事项详解-创新互联

 前言

罗庄ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!

有时候前后台做数据交互,会遇到烦人的跨域请求问题,如果你还是一枚编程小白来说,无疑来说是很痛苦的事。

当然网上也肯定会有一些解决方法。但自身实力有限,不一定会看的懂,能把问题解决了。所以下面这篇文章就来给大家总结介绍在Spring MVC中处理ajax请求的跨域问题与一些注意事项,话不多说了,来一起看看详细的介绍吧。

为何跨域


简单的说即为浏览器限制访问A站点下的js代码对B站点下的url进行ajax请求。假如当前域名是www.abc.com,那么在当前环境中运行的js代码,出于安全考虑,正常情况下不能访问www.zzz.com域名下的资源。

解决方法

.首先要知道ajax请求的核心是JavaScrip对象和XmlHttpRequest,而浏览器请求的核心是浏览器

ajax请求

浏览器请求

场景一:使用ajax获取session中的user(跨域)

Spring MVC中处理ajax请求的跨域问题与注意事项详解

从上图可知,ajax每次访问服务器时都没有携带cookie,所以服务器每次都会分配一个新的session对象,所以ajax默认请求是直接获取不了session中的数据的。因此,如果我们想要通过ajax获取当前浏览器的session,我们必须保证每次发送请求都要携带cookie以确保获取的事统一个session。

解决方法:step1.服务器设置接收ajax发送的cookie

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
//HandlerInterceptorAdapter//跨域设置
public class CrossInterceptor extends HandlerInterceptorAdapter {
  
 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
 response.addHeader("Access-Control-Allow-Origin","http://localhost:8080");
 response.addHeader("Access-Control-Allow-Methods","*");
 response.addHeader("Access-Control-Max-Age","100");
 response.addHeader("Access-Control-Allow-Headers", "Content-Type");
 //允许客户端发送cookies true表示接收,false不接受 默认为false?
 response.addHeader("Access-Control-Allow-Credentials","true");
 return super.preHandle(request, response, handler);
 } 

}

网站名称:SpringMVC中处理ajax请求的跨域问题与注意事项详解-创新互联
分享网址:http://cdweb.net/article/cchccs.html