这几天用jsop实现了公司的sso。ajax
这里面最重要的是对cookie的理解。json
cookie 就是一个网站存于本地的数据,zai下次请求同一个网站时,发送给服务器,服务器端能够进行AUD操做,这种操做后的数据会返回并保留在本地,等待下次请求。服务器
对同一个网站,不论是网页,ajax,或者jsonp请求,cookie都会被发送到服务器。cookie
利用jsonp把sso站点的cookie,传送登陆站点,解析后,经过回调,传送给当前站点,就完成了sso的登陆功能。app
其实就是,cookie只和被请求站点有关,任何方式对站点的请求,只会传送被请求站点的cookie,和发起请求的站点无关。async
private void ReturnUserInfo(WebUser user,string token,string userJson) { HttpContext.Current.Response.Write(callbackName + "({\"result\":\"0\",\"uname\":\"" + user.RealName + "\",\"token\":\"" + token + "\",\"data\":\"" + userJson + "\"});"); HttpContext.Current.Response.End(); }
//ajax function GetJsonpData(callback,data,url) { $.ajax({ async: false, crossDomain: true, type: "GET", dataType: "jsonp", jsonpCallback: callback, //jsonp: "callback", //默认callback url: url, data: data, contentType: "application/json; charset=utf-8", success: function (json) { }, beforeSend: function () { }, complete: function (data, status) { }, error: function (XMLHttpRequest, textStatus, errorThrown) { var t1 = textStatus; var t2 = XMLHttpRequest.status; var t3 = XMLHttpRequest.readyState; ; var t4 = XMLHttpRequest.responseText; // alert(textStatus); } }); }