域名转发后导致session丢失的解决办法
近来有朋友问,域名做隐藏转发后,session值丢失了,怎么办?其实这问题可通过Cookies跨域解决。先将解决思想公布如下:
1、在iis新建站点3个www.webym.net(和webym.net),ad.webym.net,blog.webym.net
2、在www.webym.net下建立文件testcookies.asp,代码如下:
<% Response.Cookies("Type") = "Test Cookies" Response.Cookies("Type").Expires = date()+30 Response.Cookies("Type").Domain = ".webym.net" Response.Cookies("Type").Secure = False Response.Write Request.Cookies("Type") %> |
3、在ad.webym.net下建立文件testcookies.asp,代码如下:
<%Response.Write Request.Cookies("Type")%> |
4、在blog.webym.net下建立文件testcookies.asp,代码同上
5、因为是本机测试,修改hosts文件,把4个域名都指向到127.0.0.1,也就是添加如下内容:
文件位置:C:\WINDOWS\system32\drivers\etc\hosts.asm
127.0.0.1 ad.webym.net
127.0.0.1 blog.webym.net
127.0.0.1www.webym.net
127.0.0.1 webym.net
6、关闭所有浏览器,开IE,打开http://www.webym.net/demo/testcookies.asp,显示出文本内容:Test Cookies
7、新建窗口,打开http://ad.webym.net/temp/testcookies.asp,显示出文本内容:Test Cookies
8、新建窗口,打开http://blog.webym.net/temp/testcookies.asp,同样显示出如上文本内容
9、换其他4个浏览器,都成功。
退出
Response.Cookies("Type").Expires = date()-30
Response.Cookies("Type").Domain = ".webym.net"
注意点:
1、Response.Cookies("Type").Secure = False,Secure属性一定要是false,或者直接不执行这行,如果Secure = True,则ad和blog的2级域名是取值不了。
2、Response.Cookies("Type").Domain = ".webym.net",domain的值,我设置为"webym.net",也就是没有前面的点,在ie下成功
其他4个浏览器没测试。
3、path我猜是不应该设置的。
4、在局域网内其他机器上,修改host指向到我机器的IP,取值成功。
5、在局域网另外一台机器上架设ad.webym.net,把testcookies.asp文件copy过去,同时修改host到当前机器,取值成功