java开发跨域问题解决方案

1、扫描是跨域:

简单来的说是你接口的域名与要请求接口的域名不在同一个域名下或者不是同一个端口时,访问HTTP请求存在跨域的问题。

2、跨域解决方案:跨域资源共享(CORS)机制和JSONP方式

3、具体解决方案:

1)配置跨域资源共享场景:当业务存在跨域需求时,需要设置Access-Control-Origin及Origin白名单,当跨域请求携带Cookie时,才允许设置Access-Control-Allow-Credentials头并且必须设置精细化的白名单,例如*.com必须禁止。需要跨域时,设置Origin白名单,只允许特定域发起跨域请求;若不需要Cookie,则不设置

//预定义Origin白名单
String[] allowOrigin = {“http://www.baidu.com”,”https://toutiao.com”};
Set<String>allowedOrigins=new HashSet<String>(Arrays.asList(allowOrigin));
String originHeader = request.getHeader(“Origin”);
If(allowedOrigins.contains(originHeader)){
response.setHeader(“Access-Control-Allow-Origin”,originHeader);
response.setHeader(“Access-Control-Allow-Methods”,”POST,GET,OPTIONSw”);
response.setHeader(“Access-Control-Max-Age”,”3600”);
response.setHeader(“Access-Control-Allow-Headers”,”content-type,x-requested-with”);
//若CORS跨域请求需要携带Cookie,则设置Access-Control-Allow-Credentials属性为true,反之不设置
// response.setHeader(“Access-Control-Allow-Credentials”,”true”);

}

2)JSONP跨域输出的场景:JSONP是JSON的一种“使用模式”,用于解决主流浏览器的跨域数据访问的问题,JSON的跨域传输数据,必须验证JSON请求来源为本域后自定义白名单域名

Boolean securityCheck = false;
try{
URl rul = new URL (request.getHeader(“Referer”));
String host = referrer.getHost();
If(host!= null && host.endsWith(“.com”)){
securityCheck = true;
}else{
securityCheck = false;
}}catch{
}
If(securityCheck){
//正常处理
}

如果存在跨域问题,设置二者中一种即可

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值