jquery ajax跨域访问

基于Jquery的Ajax跨域访问

单点登录服务器(sso服务器)

令牌认证服务器(令牌服务器)

 

登录网页项目的时候,由于使用了单点登录,所以页面会跳转到sso服务器,进行统一登录,

现在需要在该界面增加令牌的认证,但是SSO服务器和令牌服务器部署在不同的服务器,且暂时没有要合并的可能,所以在SSO登录的时候必须要对令牌进行验证,就必须涉及到了跨域访问的问题。

最开始不了解跨域的概念,以为在局域网中就没有跨域,毕竟对外的域名都是统一的,所以直接使用

js代码 at  SSO服务器

$.ajax({
  url :http://192.168.123.10:8080/authority/identyfying.htm,
  type :"POST",
  data : {"name":name,"code":code},
  success :function(data){
    alert(data);
}
});
action代码 at 令牌服务器端

<%
Stringresult=request.getAttribute("result")==null?“”:request.getAttribute("result").toString();
String json="{result:"+result+"}";
response.getWriter().write(json);
%>
结果发现SSO服务器访问URL后的返回值的空值,但是本地实测返回肯定是有值的,猜测是防火墙问题,网段问题等等,最后终于在别人的提醒下,发现是因为跨域了。

查询了Jquery的相关API,修改如下

js代码 at  SSO服务器

$.ajax({
    url:urls,
    type: "GET",
    dataType: "jsonp",
    jsonp: "jsonpCallback",
    crossDomain : true,
    data: {“name”:name,“code”:code},
    success: function (data){
     var result = data.results;
     var msg = result?"成功":"失败,请重新输入6位令牌数字";
     $("#verify").html("动态口令验证"+msg);
    },
       error: function(xhr){
        alert("请求出错(请检查相关度网络状况.)");
    }
   });


action代码 at 令牌服务器端
<%
Stringresult=request.getAttribute("result")==null?“”:request.getAttribute("result").toString();
String callback = request.getParameter("jsonpCallback")+"({\"results\":"+results+"})";       
response.getWriter().write(callback);
%>
飘红的两处命名必须相同。

最终结果OK,可以验证了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值