java 跨域session_解决跨域session 同步问题

跨域来源:(前端站点和后端API布署到不同的站点)

f8cb500ab1cc8ca280aabcf86d5c206f.png

解决方案

一.服务端设置

1.配置允许跨域请求

public classBaseAction {/*** 支持跨域请求

*@authorfxd

*@paramresponse

*@sinceJDK 1.6*/

protected voidcrossComain(HttpServletRequest request,HttpServletResponse response){

String[] allowDomains= {"http://www域名1","http://www域名2"};

Set allowOrigins= newHashSet(Arrays.asList(allowDomains));

String originHeads= request.getHeader("Origin");if(allowOrigins.contains(originHeads)){//配置跨域访问的最简单的方式是用通配符 * ,(就是不安全,所有的请求都能跨域)

response.setHeader("Access-Control-Allow-Origin", originHeads);

response.setHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS,DELETE,HEAD,PUT,PATCH");

response.setHeader("Access-Control-Max-Age", "36000");

response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept,Authorization,authorization");

response.setHeader("Access-Control-Allow-Credentials","true");//保持跨域 Ajax 时的 Cookie

}

}

}

2.接口调用跨域方法

/*** 测试*/@Controllerpublic class Test extendsBaseAction{

@RequestMapping("Test")public voidtest(HttpServletRequest request,HttpServletResponse response){//调用允许跨域方法,此接口支持跨域请求

crossComain(request, response);

System.out.println("支持跨域请求");

}

}

以上两步就完成接口跨域请求了

二. 客户端配置

1.因为在默认情况下,跨源请求不提供凭据(cookie、HTTP认证及客户端SSL证明等)。通过将withCredentials属性设置为true,可以指定某个请求应该发送凭据。如果服务器接收带凭据的请求,会用下面的HTTP头部来响应。

57cef2d1e4b5fda053684e19e4ec532b.png

/**

* ajax post 跨域 request

* @param {Object} url 请求地址

* @param {Object} data 请求参数

* @param {Object} success 成功回调

* @param {Object} async 是否同步 false:同步 ture:异步

*/

function ajax_cross(url,data,success,async){

$.ajax({

type:"post",

url:url,

async:async,

data:data,

dataType:"json",

xhrFields:{

withCredentials:true

},

crossDomain:true,

success:success

});

}

2.调用分装好的ajax方法:如图

$(function(){

Test();

});

//测试

function Test(){

//跨域请求

ajax_cross("/Test",{},function success(result){

console.log(result);

},false);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值