二级域名Cookie问题的解决方法

在代码中,我是通过Request.IsAuthenticated来判断当前请求是否被验证的,以前全部采用www.cnblogs.com域名时很正常,看来是域名不同引起的。对于Form验证,验证是通过cookie进行的,在执行Request.IsAuthenticated时,会请求客户端相应的Cookie, Cookie名是在web.config中指定的,比如博客园web.config中的设置:


代码如下:

<authentication mode="Forms">
<forms name=".DottextCookie" loginUrl="login.aspx" protection="All" timeout="480" path="/" />
</authentication>

也就是说在执行Request.IsAuthenticated时,会执行类似这样的代码,HttpCookie cookie = Request.Cookies[".DottextCookie"];我们知道Cookie是与域名关联的,HttpCookie就有个Domain属性。博客园所遇到的问题就是二级域名不能访问主域名的cookie,登录时,博客园的程序通过FormsAuthentication.SetAuthCookie设置Cookie, 而登录代码是在www.cnblogs.com域名下执行的,cookie的域名被默认设置为www.cnblogs.com, 而我们在二级域名下就无法访问这个cookie,如何解决这个问题呢?cookie的domain是否可以设置成对所有二级域名有效?在Google中苦苦寻觅,终于找到了一篇文章(Tips On Using SubDomain), 原来可以将cookie关联的域设置为".domain.ext", 博客园的设置就是.cnblogs.com。 这样,我在FormsAuthentication.SetAuthCookie之后,加上这样的代码就解决问题了:
C#


代码如下:

HttpCookie cookie = Request.Cookies[".DottextCookie"];
if(cookie!=null)
{
cookie.Domain = ".cnblogs.com";
Response.Cookies.Add(cookie);
}

注:
1、如果你现在还会遇到访问二级域名要重新登录的情况,请删除你计算机中相应的cookie文件,路径在C:\Documents and Settings\用户名\Cookies与C:\Documents and Settings\用户名\Local Settings\Temporary Internet Files中,文件格式为:用户名@www.cnblogs.com, 然后重新登录。
2、如果你发现其他与二级域名相关的问题,请及时与我联系。
3、如果你在访问博客园时,出现“Runtime Error”错误,那是因为刚刚更新了dll文件,你再过1、2分钟重新打开IE访问就行了。
4、现在已经全面启用二级域名。

(0)

相关推荐

  • 二级域名Cookie问题的解决方法

    在代码中,我是通过Request.IsAuthenticated来判断当前请求是否被验证的,以前全部采用www.cnblogs.com域名时很正常,看来是域名不同引起的.对于Form验证,验证是通过cookie进行的,在执行Request.IsAuthenticated时,会请求客户端相应的Cookie, Cookie名是在web.config中指定的,比如博客园web.config中的设置: 复制代码 代码如下: <authentication mode="Forms">

  • php中cookie实现二级域名可访问操作的方法

    本文实例讲述了php中cookie实现二级域名可访问操作的方法.分享给大家供大家参考.具体方法如下: cookie在一些应用中很常用,假设我有一个多级域名要求可以同时访问主域名绑定的cookie,下面就来给大家具体介绍在php中利用setcookie实现二级域名可以成功访问主域名cookie值的方法. 有时候两个域名可能在不同的服务器上,但是我们依然希望二级域名能够顺利访问主域名的cookie,主域名可以顺利访问二级域名的cookie,比如sc.jb51.net 希望能访问 www.jb51.n

  • php出现web系统多域名登录失败的解决方法

    本文实例讲述了php出现web系统多域名登录失败的解决方法,分享给大家供大家参考.具体分析如下: 下面只是简单的逻辑结构,对于正式的系统需要做具体的处理. 这里需要注意的是:加解密一定需要做安全验证.但是这个方法也不够完美,两个站点必须有相同一级域名:另外这种完全基于cookie的方式,安全性不够高 function login() { $info = callloginserver(); //访问登录服务器 if(!empty($info)) //登录成功了 } //用户没有登录,则在本系统中

  • thinkphp中session和cookie无效的解决方法

    本文实例讲述了thinkphp中session和cookie无效的解决方法.分享给大家供大家参考.具体分析如下: 问题描述: 在本地调试时session和cookie是用没有问题的,我是用session保存当前登录账户的信息,上传服务器之后,发现跳转之后session不复存在,为什么呢?在当前页面输出session是存在的. 遇到这个问题三天了,因为是自学没有老师可以请教,身边也没有几个是弄PHP的,所以真的是很悲剧,于是乎百度,而百度上很多人都是屁话连天,没有什么可以解决问题的,经过三天的修改

  • PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法

    下面的代码:在chrome和firefox下可以生成三个cookie: cookie[one].cookie[two].cookie[three] 在IE下,只能生成cookie[one].cookie[two]两个cookie,第三个因为指定了".65.la",导致cookie[three]生成失败. 复制代码 代码如下: <?php setcookie("cookie[one]", "cookieone",time()+36000,&q

  • JS cookie中文乱码解决方法

    复制代码 代码如下: function SetCookie(name, value) {        var exp = new Date();        exp.setTime(exp.getTime() + 3 * 24 * 60 * 60 * 1000); //3天过期        document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();       

  • jquery 删除cookie失效的解决方法

    最近做一个功能, 但是删除cookie的时候总是失效, 搞不清楚什么原因. 使用$.cookie("name","");  结果出来是生成了一个新的空值的cookie. 使用$.cookie("name",null); 又删除不掉cookie. 最后使用$.cookie("name",null,{path:"/"});  终于成功了. 或许是$.cookie的一个bug吧, 不知最新版的有没有修复这个Bug

  • Ajax跨域访问Cookie丢失问题的解决方法

    ajax跨域访问,可以使用jsonp方法或设置Access-Control-Allow-Origin实现,关于设置Access-Control-Allow-Origin实现跨域访问可以参考之前我写的文章<ajax 设置Access-Control-Allow-Origin实现跨域访问> 1.ajax跨域访问,cookie丢失 首先创建两个测试域名 a.fdipzone.com 作为客户端域名 b.fdipzone.com 作为服务端域名 测试代码 setcookie.PHP 用于设置服务端co

  • 使用nginx+二级域名+https支持

    第一步:在阿里云主域名下解析添加二级域名 第二步在阿里云云盾中购买https协议,并绑定域名, 如果只为测试建议购买免费版的 第三步在nginx中配置二级域名的server nginx配置 http走的是80端口 nginx配置 https走的是443端口 二级域名配属nginx有多种方法本人在这是用nginx导入文件夹所有的二级域名配置与主域名配置分离开来,避免耦合过深 导入二级域名所在目录文件夹到nginx中 二级域名所在目录 二级域名配置如下 最后一步 进入nginx的sbin目录 通过

  • PHP+Apache实现二级域名之间共享cookie的方法

    本文实例讲述了PHP+Apache实现二级域名之间共享cookie的方法.分享给大家供大家参考,具体如下: 简介 login.koastal.com设置domain为koastal.com,则www.koastal.com即可访问该cookie. 也就是说二级域名(或者三级域名)之间可以通过这种方式共享cookie. 其实cookie的domain属性的用法跟path有些类似,比如我们将cookie的path设置为/,则/user目录下也可以访问该cookie. 实践 Apache同一端口对应不

随机推荐