日期:2014-05-16  浏览次数:20748 次

跨域获取cookies和session的问题
A站的A页面如下代码请求B站的B页面。
	Dim Http,TempText
Set Http = Server.CreateObject("XStandard.HTTP")
Http.Get "http://login.zugou.com/Passport.htm"
Http.MaxRedirects=0'不允许跳转
Http.TimeOut=10 '超时秒
If Http.ResponseCode <> 200 Then
TempText = "no"
Else
TempStr = Http.ResponseSafeArray
End If
SET Http= nothing
If Instr(TempText,"|")=0 Then
Response.Write("格式错误")
Response.End()
End If
TempText = Lib.BytesToBstr(TempStr,"utf-8")
Response.Write(TempText)


B站的B页面获取B站的cookies和session。代码如下:
passpord			= Session("passpord")
MyName = Request.Cookies("MyName")
Response.Write(passpord&"‖"&MyName)


直接打开B页面是有内容的。
但通过A页面打开只有“‖”。

请问是什么原因,我该如何实现这个功能呢?想实现会员登录状态共享。
------最佳解决方案--------------------
 Http.Get "http://login.zugou.com/Passport.htm"

你请求错页面了吧。。怎么是静态页??

------其他解决方案--------------------
A 站的服务端代码是无法获取“用户浏览器在 B 站的 cookie”的,原因嘛,楼上第一句已经说清楚了。

正确的做法应该是,A 站返回给浏览器的 A 页面里,写一段 JavaScript 代码,通过 JSONP 的方式向 B 站发送请求(由用户浏览器发送请求),得到所需的结果。


————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
------其他解决方案--------------------
这个是动态页面啊。只是后最是htm而已。
------其他解决方案--------------------
呵呵,搞错了。浏览器直接访问的话cookie是由浏览器读取硬盘上的cookie文件后一起发送到客户端的

服务器端xhr对象发送的请求并不附带cookie和session对应的cookie项,所以你a站是无法获取到b站对应的cookie的,XStandard.HTTP这个组件支持设置cookie没有,如果可以你需要在发送请求前设置asp session对应cookie值,这样就可以获取到session了。