通过A站点写一定的代码去登录B站点,我可以通过post去成功登录B站点,问题是我想登录成功后直接将主动权交给B站点,也就是说模拟B站点的登录,登录成功后的操作交给B站点(如转向main.aspx),现在是不知道如何转向登陆成功以后的主界面
string Password = "000000";
ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "txtUserName=" + UserName;//比如网页上输入框的名字为uname
postData += ("&txtPwd=" + Password + "&action=submit&http_referer=");//密码输入框名字为password
byte[] data = encoding.GetBytes(postData);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://B/login.aspx");//登陆页地址
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
myRequest.KeepAlive = true;
myRequest.AllowAutoRedirect = true;
myRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";
Stream newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
myRequest.CookieContainer = cc;
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
myResponse.Cookies = myRequest.CookieContainer.GetCookies(myRequest.RequestUri);
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
string content = reader.ReadToEnd();//此处已经登陆成功返回的是第三方的主页面main.aspx的html,不能直接输出到页面,因为资源文件是属于B站点
当然不能把响应内容输出了,直接Redirect跳转不行吗?
直接Redirect 是不行的
@liusaup:
哦,明白,那你不要在后台去模拟请求,而是用前台提交登陆B,完了再Redirect 。
为什么不考虑把A站点设置个OpenID呢?
建议参考OAUTH协议,这样可以避免在A站点触及B站点的用户的帐号信息。
你好,不知道是否有相关的博文可以参考
@liusaup: OAuth授权说明 http://wiki.open.t.qq.com/index.php/OAuth%E6%8E%88%E6%9D%83%E8%AF%B4%E6%98%8E
关注,学习~
用一个状态返回到客户端,成功够,就转到B网站,用js跳转