要实现的功能如下:
客户端A(浏览器)、服务器B(中转服务器)、服务器C(目的服务器)
我现在是当服务器B接收到客户端A的请求后经过处理访问服务器C,再把读取访问服务器C返回的内容返回给客户端A。
现在主要的问题是,怎么让服务器C保存有客户端A的会话?比如客户端A访问服务器B,服务器B提交用户名和密码登陆服务器C把请求返回的内容返回给客户端A。怎么让服务器C能保存客户端A的登陆状态?先说明服务器C不受自己控制范围内,属于第三方提供的。也无协商修改的余地。也不要在客户端上做跳转。因为必须让客户端连接服务器B,中间要处理一些数据。。这样的做法有点像代理服务器。。不过这个中转是要处理部分内容的。。前5名指导思路的各给10分。我认为最好的回答的单独给50分,给出示例代码的另开帖送100分。

解决方案 »

  1.   

    服务器B 使用httpwebrequest去访问C(包括登录以及其他等功能)
    通过httpwebrequest.CookieContainer来与C保持会话,而这上会话对象可保存在B的Session中 B的Session又是与A建立会话的.
      

  2.   

    我目前是这样做的。好象没什么效果。到了客户端那边服务器C就不认客户端了。。
    最好能做成这样。客户端连接服务B时,服务器B发送处理后的请求给服务器C,然后把请求返回的内容返回给客户端A之后。客户端可以直接连接服务器C操作。
    因为我这里有一部分要处理的内容,服务器B请求服务器C时要把用户名和密码作为参数POST给服务器C。如果是重定向会把用户名和密码暴露给客户端。。
    请教了!!
      

  3.   

     System.Net.HttpWebRequest req = ( System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("http://localhost");            System.Net.CookieContainer cook = null;
                if(Session["cook"]!=null)
                {
                    cook = (System.Net.CookieContainer)Session["cook"];
                }else
                {
                    cook = new System.Net.CookieContainer();
                    Session["cook"] = cook;
                }
                req.CookieContainer = cook;
                
                //然后登录,或其他操作.
      

  4.   

    服务器C地址http://xxx.xxx.xx.xxx/1.php
    服务器B地址http://localhost/1.aspx
    客户端需要用户名和密码才能登陆服务器C的http://xxx.xxx.xx.xxx/1.php页面。现在我要实现的是当客户端访问我的服务器B时,服务器B把用户名和密码POST给服务器C,让客户端能连接上服务器C。。但是又不想通过URL重定向或脚本重定向等方法实现,因为会把用户名和密码暴露给客户端。cpp2017 专家能根据我这个要求给出一段示例代码吗?
      

  5.   

    这是标准的嵌入代码,改掉里面的路径或文件名即可:(virtual替换掉你的文件名,还有宽度和高度)<script type="text/javascript">
    AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab',
    'name','virtual','width','900','height','580','id','virtual','movie','virtual','quality','high','bgcolor','#F6F6F6','allowscriptaccess','always','wmode','Opaque' ); 
    </script>
    <noscript>
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
                 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="virtual" name="virtual" width="900" height="580" >
             <param name="movie" value="virtual.swf" />
         
             <param name="quality" value="high" />
                 <param name="wmode" value="Opaque" />
             <param name="allowScriptAccess" value="always" />
                   <embed src="virtual.swf" quality="high"
                 width="900" height="580" name="virtual" align="middle"
                 play="true" loop="false" quality="high" allowScriptAccess="always"
                 type="application/x-shockwave-flash"
                 pluginspage="http://www.macromedia.com/go/getflashplayer">
             </embed>
         </object>
     </noscript>
    我即精通flash的AS,又精通.net,有问题可以问我..
      

  6.   

    服务器C地址http://xxx.xxx.xx.xxx/1.php 
    服务器B地址http://localhost/1.aspx 
    客户端需要用户名和密码才能登陆服务器C的http://xxx.xxx.xx.xxx/1.php页面。现在我要实现的是当客户端访问我的服务器B时,服务器B把用户名和密码POST给服务器C,让客户端能连接上服务器C。。但是又不想通过URL重定向或脚本重定向等方法实现,因为会把用户名和密码暴露给客户端。cpp2017 专家能根据我这个要求给出一段示例代码吗?
    你在服务器B把用户名和密码POST给服务器C时,同时传递一个参数,作为服务器C记录客户端A的登陆状态。可以给它加密。要调试时,对其进行解密操作
      

  7.   

    要将A通过B到C登录后,然后A直接访问C有点难度,如果要实现可以
    B登录到C后得到的Cook,然后B将cookie的里的内容伪造成C的地址写给A.
      

  8.   

    cpp2017说的就是我的意思了。。其实最想实现的就是这样。。这样做应该是属于Cookie欺骗了。。但没做过,不知道怎么实现。。
      

  9.   

    cpp2017专家,能否给一份怎么伪造Cookie的示例代码。