Javaweb使用cors完成跨域ajax数据交互
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。
ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告。
cors
全称:Cross-OriginResourceSharing
中文意思:跨域资源共享
它在维基百科上的定义是:跨域资源共享(CORS)是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源。而这种访问是被同源策略所禁止的。CORS系统定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。它是一个妥协,有更大的灵活性,但比起简单地允许所有这些的要求来说更加安全。
1、通过Maven引用
cors-filter、
com.thetransactioncompany cors-filter 2.5 com.thetransactioncompany java-property-utils 1.10
2、在web.xml里面配置过滤器,使用引入的jar中定义好的过滤器。注意修改cors.allowOrigin节点,如果允许所有站点跨域访问,可以修改为[*],如果是多个站点,可以用[,]分隔配置。
跨域过滤器 CORS com.thetransactioncompany.cors.CORSFilter cors.allowOrigin https://127.0.0.1:8380 cors.supportedMethods GET,POST,HEAD,PUT,DELETE cors.supportedHeaders Accept,Origin,X-Requested-With,Content-Type,Last-Modified cors.exposedHeaders Set-Cookie cors.supportsCredentials true CORS /*
3、通过jQuery跨域调用数据,实例代码如下:
跨域测试 body{ margin:0pxauto0pxauto; } .p_container{ margin:0pxauto0pxauto; width:100%; height:200px; } .p_container>iframe{ width:100%; height:100%; }
跨域调用 $(function(){ $('#btn_test').click(function(){ //alert('dddd'); //variframe_main=$("#iframe_main").contents(); //iframe_main.find("#account").val('test'); $.ajax({ url:"https://10.18.25.119:8480/jxfp/index.jsp", type:"GET", dataType:"text", timeout:10000, xhr:function(){//这是关键获取原生的xhr对象做以前做的所有事情 varxhr=jQuery.ajaxSettings.xhr(); xhr.withCredentials=true; returnxhr; }, success:function(data){ $("#p_show").html(data); //Console.log(data); }, error:function(e){ $("#p_show").html(e.statusText); } }); }); });