Gzip 网站 能够压缩图片吗,营销型网站规划,勤哲网站开发视频,搜索引擎优化的技巧场景#xff1a;目前有项目A(基于servlet的WEB项目)#xff0c;和项目B(基于spring boot的WEB项目)#xff0c;使用同一CAS提供单点登陆#xff0c;如今须要两个项目互相调用接口数据#xff0c;因此涉及到ajax的跨域请求java调研#xff1a;通过调研发现目前的ajax跨域解…场景目前有项目A(基于servlet的WEB项目)和项目B(基于spring boot的WEB项目)使用同一CAS提供单点登陆如今须要两个项目互相调用接口数据因此涉及到ajax的跨域请求java调研通过调研发现目前的ajax跨域解决方案有两种jsonp和cors其中jsonp须要在返回值中携带回调函数cors则须要在响应头中附加指定参数。比对实现方式和优劣点决定使用cors来实现webCORS原理服务器在收到请求以后在响应参数中加入Access-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Max-AgeAccess-Control-Allow-HeadersAccess-Control-Allow-Credentials等参数浏览器在接收到返回值后会经过这些参数的设置来判断服务器是否支持跨域请求。因此使用cors的方法就是经过设置过滤器在指定请求的响应头中添加参数便可传统的WEB项目须要在web.xml中设置而spring boot项目能够经过注解来设置ajax1servlet的WEB项目实现CORSspring服务器端新建过滤器类jsonpackage com.tas.util;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletResponse;/*** 跨域支持*/public class SimpleCORSFilter implements Filter {Overridepublic void destroy() {// TODO Auto-generated method stub}Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletResponse httpServletResponse (HttpServletResponse) response;httpServletResponse.setHeader(Access-Control-Allow-Origin, http://localhost);httpServletResponse.setHeader(Access-Control-Allow-Methods, POST, GET, OPTIONS, DELETE);httpServletResponse.setHeader(Access-Control-Max-Age, 3600);httpServletResponse.setHeader(Access-Control-Allow-Headers, x-requested-with);// 是否支持cookie跨域httpServletResponse.addHeader(Access-Control-Allow-Credentials, true);chain.doFilter(request, response);}Overridepublic void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub}}在web.xml中配置过滤器注意过滤器要配置在sevrlet和cas的过滤器以前跨域Simple CORSFiltercom.tas.util.SimpleCORSFilterSimple CORSFilter/*这样的配置就完成了须要注意的是在须要跨域访问该项目的网页中若是须要传递cookie则要在ajax中打开withCredentials以下浏览器$.ajax({url:http://localhost:8080/tasociety/IndexController.crossdomainTest.do,type: get,dataType:json,xhrFields: {withCredentials: true},crossDomain: true,success:function (data) {alert(12345);console.log(data);}})2spring boot 的WEB项目实现CORS服务器由于有默认的注解CrossOrigin因此直接配置在controller上就行了cookiepackage com.castmember.Controller;CrossOrigin(origins http://localhost:8080,allowCredentials true)Controllerpublic class IndexController {AutowiredSysUserDao sysuserdao;RequestMapping(/)public String index(Model model) {Optional useropt sysuserdao.findById((long)1);model.addAttribute(user, useropt.orElse(null));return index;}}在须要跨域访问该项目的网页中若是须要传递cookie则要在ajax中打开withCredentials以下app$.ajax({url:http://localhost/castmember/crossdomaindata,type: get,dataType:json,xhrFields: {withCredentials: true},crossDomain: true,success:function (data) {alert(12345);console.log(data);}})