实现Cookie跨域共享
实现原理:cookie是不能跨域访问的,但是在二级域名是可以共享cookie的
概念说明:站点1=a.abc.com 站点2=b.abc.com
实现步骤:1. 配置两个站点的webconfig
2. a.abc.com写入cookie
3. b.abc.com读取cookie
一、配置Webconfig:
<httpRuntime targetFramework="4.0" />
我用的vs2012,默认生成的targetFramework=4.5 不知道为什么 4.5就不能跨域,有知道的朋友请指教。
<authentication mode="Forms">
<forms domain="abc.com" name="abc.authcookie" protection="None" />
</authentication>
测试了N久,这三个属性少一个都不能访问。两个站点的authentication配置是一样的。
二、站点1写入cookie
//利用asp.net中的form验证加密数据,写入Cookie
private HttpCookie GetAuthCookie(string userData, string userName)
{
//登录票证
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
3,
userName,
DateTime.Now,
DateTime.Now.AddMinutes(100000),
false,
userData,
FormsAuthentication.FormsCookiePath //可在webconfig中设置 默认为/
);
string encTicket = FormsAuthentication.Encrypt(ticket);
if ((encTicket == null) || (encTicket.Length < 1))
{
throw new HttpException("Unable_to_encrypt_cookie_ticket");
}
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
cookie.Path = "/";
cookie.HttpOnly = true; //是否可通过脚本访问 设置为true 则不可通过脚本访问
cookie.Domain = FormsAuthentication.CookieDomain; //webconfig中设置的domain
//cookie.Secure = FormsAuthentication.RequireSSL; //当此属性为 true 时,该 Cookie 只能通过 https:// 请求来发送
if (ticket.IsPersistent) //票证是否持久存储
{
cookie.Expires = ticket.Expiration;
}
return cookie;
}
三、站点2读取cookie
T user=null;
if (HttpContext.User != null
&& HttpContext.User.Identity.IsAuthenticated
&& HttpContext.User.Identity.Name != string.Empty
&& HttpContext.User.Identity.AuthenticationType == "Forms")
{
FormsIdentity id = HttpContext.User.Identity as FormsIdentity;
if (id != null)
{
FormsAuthenticationTicket ticket = id.Ticket;
user = this.DeserializeUserInfo(ticket.UserData);
if (user == null)
{
return false;
}
return true;
}
else
{
user = default(user);
return false;
}
}
else
{
user = default(user);
return false;
}
实现Cookie跨域共享的更多相关文章
- cookie跨域共享
domain和path属性,domain就是当前域,默认为请求的地址,如网址为www.jb51.net/test/test.aspx,那么domain默认为www.jb51.net,path默认就是当 ...
- [php] cookie 跨域共享
<?php // m.hinabian.com class Controller_Cookie extends Hnb_Base_Controller { public function ini ...
- 在ExpressJS中设置二级域名跨域共享Cookie
问题:我使用expressjs和mongostore来管理session.下面是expressjs中的设置. app.configure(function(){ app.use(express.ses ...
- cookie用法小结 cookie.setPath 跨域共享
1. JSP中Cookie的读写 Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息.Cookie还有一些附加信息,比如域名.有效时间.注释等等. 下面 ...
- 跨域共享cookie和跨域共享session
转载自:http://blog.csdn.net/ahhsxy/article/details/7356128 这里所说的跨域,是指跨二级域名,而且这些域名对应的应用都在同一个app上, 比如我有以下 ...
- 跨域共享cookie
1. JSP中Cookie的读写 Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息.Cookie还有一些附加信息,比如域名.有效时间.注释等等. 下面 ...
- cookie 跨域访问的解决方案
Cookie 同域单点登录 最近在做一个单点登录的系统整合项目,之前我们使用控件实现单点登录(以后可以介绍一下).但现在为了满足客户需求,在不使用控件情况下实现单点登录,先来介绍一下单点登录. ...
- session跨域共享解决方案
要让session跨域共享,需要解决三个问题: 1.通过什么方法来传递session_id? 2.通过什么方法来保存session信息? 3.通过什么方法来进行跨域? 一.传递session_id有4 ...
- 关于Cookie跨域操作的一些总结
正常的cookie只能在一个应用中共享,即一个cookie只能由创建它的应用获得. 1.可在同一应用服务器内共享方法:设置cookie.setPath("/"); 本机to ...
随机推荐
- SP Flash Tool使用异常集锦
1.The load scatter file is invalid无法载入scatter文件 (ubuntu下)我如果我们在使用MTK的Smart Phone Flash Tool过程中无法载入Sc ...
- 纯CSS 箭头流程,网上找的,留着备用
无意之中看到一个纯CSS做的箭头导航(流程式),收藏一下,以备不时之需 实际效果 步骤一 步骤二 步骤三 步骤四 源代码: HTML: <div class="wrapper" ...
- Ubuntu gcc缺失问题
在安装redis过程中,需要使用make编译源码,但发现linux中缺失gcc,系统为Ubuntu12. 一般情况下,可使用sudo apt-get install gcc或者sudo apt-get ...
- 深入理解css系列:meta标签
积累太少,时间管理技巧欠缺,所以导致了博客更新的速度迟缓.学习中成长,成长中学习.加油吧!最近在做h5的项目,对于meta标签层出不穷的各式属性值有点头晕,所以查资料整理了下. 关键字:meta na ...
- JUnit4参数的使用
用JUnit4进行参数化测试 参数化测试是一个JUnit 3不具备的功能. 基本使用方法 @RunWith 当类被@RunWith注解修饰,或者类继承了一个被该注解修饰的类,JUnit将会使用这个注解 ...
- api将一统江湖,再无app
api的出现,使人们可以通过各种软硬件设备获取所需服务,而不需要安装臃肿的app:今后的智能设备将不再依赖软件.操作系统和硬件,或许一台51单片机都可以提供给用户所需信息.当然连名字都可以简单到不叫a ...
- 使用C#程序处理PowerPoint文件中的字符串
最近, 有同事偶然发现Microsoft Office PowerPoint可以被看作是一个压缩包,然后通过WinRAR解压出来一组XML文件.解压出来的文件包括: 一个索引文件名称为:[Conte ...
- IOS 更改百度地图的定位图片
使用了百度地图的SDK,定位图片一直是蓝色的小圆点,很不喜欢,想换成自定义的图片,在网上搜罗了一大通,找到了解决的方案. 写下如下代码: //定位图层自定义样式参数 BMKLocationViewDi ...
- ubuntu samba 服务器设置
安装 SAMBA 组件 sudo apt-get install samba smbfs smbclient ubuntu 14.04 使用以下方式安装: ? 1 2 3 4 5 6 7 若之前有安装 ...
- 进入meta模式关闭背光灯
1. 修改文件: mediatek/platform/mt6582/lk/boot_mode.c 2. 修改内容: boot_mode_select()函数: mt65xx_blacklight_of ...