二级域名Cookie问题的解决方法
程序员文章站
2022-04-17 13:28:00
在代码中,我是通过request.isauthenticated来判断当前请求是否被验证的,以前全部采用www.cnblogs.com域名时很正常,看来是域名不同引起的。对...
在代码中,我是通过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、现在已经全面启用二级域名。
复制代码 代码如下:
<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、现在已经全面启用二级域名。
下一篇: 上课迟到怎么办?用这招太牛了!
推荐阅读
-
501 Command "HELO" requires an argument问题的解决方法
-
C3P0连接池+MySQL的配置及wait_timeout问题的解决方法
-
关于iOS 11下app图标变空白问题的解决方法
-
关于iOS 11不能定位问题的解决方法
-
详解在iOS11下app图标变空白的问题解决方法
-
mysql提示[Warning] Invalid (old?) table or database name问题的解决方法
-
iOS中Xcode 8 日志输出乱码问题的解决方法
-
Xcode 8打印log日志的问题小结及解决方法
-
mysql安装时出现各种常见问题的解决方法
-
Android GPS室内定位问题的解决方法(location为null)