這幾天用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); } }); }