惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Securelist
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google DeepMind News
Google DeepMind News
N
News and Events Feed by Topic
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
T
Threat Research - Cisco Blogs
罗磊的独立博客
IT之家
IT之家
人人都是产品经理
人人都是产品经理
Stack Overflow Blog
Stack Overflow Blog
K
Kaspersky official blog
博客园_首页
T
The Blog of Author Tim Ferriss
T
Tenable Blog
I
InfoQ
Apple Machine Learning Research
Apple Machine Learning Research
T
The Exploit Database - CXSecurity.com
D
Docker
TaoSecurity Blog
TaoSecurity Blog
S
Schneier on Security
Attack and Defense Labs
Attack and Defense Labs
N
News and Events Feed by Topic
M
MIT News - Artificial intelligence
U
Unit 42
N
Netflix TechBlog - Medium
L
LINUX DO - 热门话题
C
CERT Recently Published Vulnerability Notes
T
Tailwind CSS Blog
Hacker News: Ask HN
Hacker News: Ask HN
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
美团技术团队
F
Fortinet All Blogs
Last Week in AI
Last Week in AI
AWS News Blog
AWS News Blog
V
V2EX
博客园 - 【当耐特】
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
Schneier on Security
Schneier on Security
腾讯CDC
H
Help Net Security
B
Blog RSS Feed
T
Tor Project blog
P
Privacy & Cybersecurity Law Blog
The Last Watchdog
The Last Watchdog
有赞技术团队
有赞技术团队

博客园 - 俩醒叁醉

ASP.NET MVC 4 WebAPI. Support Areas in HttpControllerSelector SQL2000安装问题(转) sql server 2008安装需要一直重启。但重启后又没有达到效果。 为数据库中所有的用户数据表生成分页存储过程 SQL 2005 字段备注获取 __doPostBack方法解析 如何在三个月掌握三年的经验(转载&&笔记) jQuery Ajax的使用 JQuery资源网站 Cookie跨域、虚拟目录 CnBlogsDotText使用实例 轻松搭建博客平台-开源ASP.NET 博客Subtext 的安装 表达式目录树(源MSDN) Web 2.0 编程思想:16条法则 Control Adapter 以下代码提供查询数据库中是否存在某个值 URL Routing MVC Controllers和Forms验证 CSharp——Lambda 表达式
深入分析跨域cookie的问题
俩醒叁醉 · 2009-03-15 · via 博客园 - 俩醒叁醉

原:http://blog.csdn.net/pwlazy/archive/2007/04/23/1576464.aspx

背景: a网站(j2ee,域名a.yourdomain),b网站(rails,域名b.yourdomain),为了使a网站和b网站登陆同步,我们决定采用cookie进行统一管理,在我们的应用中,一般是a网站产生cookie,b网站会修改和删除cookie

在删除cookie时 我们遇到一个很怪的问题就是b网站无法删除a网站建立的cookie

我们通过如下方法:

1)cookies[:ut]={:value=>"",
           :expires=>-1.days.from_now
    }

(此时浏览器确实在执行此动作前发送了cookie,值为x,返回的结果确实是此cookie变成了空,但再次发送请求的时候又发送x)

或者

2)cookies[:ut]=nil

(此时浏览器确实在执行此动作前发送了cookie,值为x,返回的结果确实是此cookie变成了空,但再次发送请求的时候又发送了两个cookie,一个为x,一个为空,服务器这边接受到的是x)

或者

3)cookies.delete :ut

(此时浏览器确实在执行此动作前发送了cookie,值为x,返回的结果确实是此cookie变成了空,但再次发送请求的时候又发送x)和1情况相同

都不行

后来发现

  def clear_ut_cookie
    cookies[:ut]={:value=>"",
      :domain=>"yourdomain",
      :expires=>-1.days.from_now
    }

这样写是可以的,也就是说必须加上:domain=>"yourdomain"

同样的道理,在修改时也是这样,如果不加上:domain=>"yourdomain",浏览器发请求送出cookie a, 服务器请求完毕,浏览器会接受到cookie b,然后浏览器再次发请求,这时会发送cookie a和cookie b 此后你会发现cookie b一直在变,cookie  a  保持不变

总结:做cookie操作最好指定domain,否则跨域的修改和修改不会生效。从上面的各种实践可以看出:如果不指定domain,那么服务器返回的cookie并不会覆盖浏览器中已有的cookie,虽然是同名cookie,但域不同,接着浏览器发送请求的时候,会将两个cookie同时发送,但服务器只会处理其中一个,那就是指定域的。

这个最根本性的原理也解释了为什么会出现上面三种问题

1)没有指定域,但有:expires=>-1.days.from_now,所以第一次请求的时候是cookie a,服务器返回的是cookie b,但cookie b 并没有覆盖cookie a,但因为有:expires,会立马过期,所以发送的时候只会发送cookie a

2)没有指定域,没有expire,所以第一次请求的是cookie a 服务器返回的是cookie b,但cookie b 并没有覆盖cookie a,且cookie b 无:expires, 所以发送的时候会发送cookie a和cookie b。。。。。。

3)和1)同