域名包含下划线会导致session在ie浏览器失效的问题,但是在FF和chrome是正常的
解决办法是去掉下划线即可.
我的网站在我的服务器上,
我设置了所有二级域名都指向到某个文件夹user。用做会员用。
比如http://user1.csdn.net 是访问用户user1的主页。
比如http://user2.csdn.net 是访问用户user2的主页。
很简单,
如果访问http://user1.csdn.net/login.asp 是用户登录页面 。
其实和页面http://user2.csdn.net/login.asp 是一样的,访问的都是同一个页面。
login.asp里面有个验证码,采用session保存验证码值。
文件夹路径:
/user/
/user/code.asp 验证码程序
/user/login.asp 登录页面(调用code.asp的验证码)
/user/savelogin.asp 登录处理程序 (在此页接受表单 ,并 和session("chkcode")匹配)
好了,程序运行一切正常,真的,非常正常。
但是突然,今天,有2个用户反馈,他们无法登陆,提示验证码错误。
结果我测试分析,
发现:
http://user1.csdn.net/login.asp(可以登录)
http://user2.csdn.net/login.asp(可以登录)
......
http://usern.csdn.net/login.asp(可以登录)
但是,
http://user_1.csdn.net/login.asp(不能登录)
http://user_2.csdn.net/login.asp(不能登录)
.....
http://user_n.csdn.net/login.asp(不能登录)
不能登录,均提示验证码错误,经调试,发现处理页面无法获得session
结研究,发现这些无法获得session的,都是会员名带有下划线_的。比如fisher_boy
我在本地计算机,做了域名指向,举个例子,把fisher_boy.csdn.net指向到我的某个文件夹,然后进行登录操作,也是发现验证码错误。
如果把fisherboy.csdn.net指向到我的某个文件夹,进行上述操作,就正常了,能获得session。
http://会员名.csdn.net/
这种命名方式,会员名成为了域名的一部分
按照DNS的标准,域名是不允许有下划线的。
域名的第一部分可以是国际化域名,但不可以短划线开始或结束
域名中不允许使用下划线字符。
域名中不允许使用空格。
域名不区分大小写-您可混合大小写。
域名最终的字符串编码连同'.com'或'.net'后缀不得超过67个字符。
所以你的session为空。