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

推荐订阅源

cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MyScale Blog
MyScale Blog
Microsoft Azure Blog
Microsoft Azure Blog
N
Netflix TechBlog - Medium
M
MIT News - Artificial intelligence
GbyAI
GbyAI
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园_首页
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
L
LangChain Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
云风的 BLOG
云风的 BLOG
Y
Y Combinator Blog
L
LINUX DO - 热门话题
Project Zero
Project Zero
罗磊的独立博客
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
MongoDB | Blog
MongoDB | Blog
Spread Privacy
Spread Privacy
S
Schneier on Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
J
Java Code Geeks
P
Palo Alto Networks Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园 - Franky
T
Threat Research - Cisco Blogs
D
Docker
Hugging Face - Blog
Hugging Face - Blog
S
Securelist
Google DeepMind News
Google DeepMind News
T
The Exploit Database - CXSecurity.com
L
Lohrmann on Cybersecurity
月光博客
月光博客
V
Vulnerabilities – Threatpost
NISL@THU
NISL@THU
V
Visual Studio Blog
AWS News Blog
AWS News Blog
I
Intezer
T
The Blog of Author Tim Ferriss
P
Privacy International News Feed
T
Tor Project blog
F
Full Disclosure
P
Proofpoint News Feed
SecWiki News
SecWiki News
H
Heimdal Security Blog
Help Net Security
Help Net Security
The Hacker News
The Hacker News

博客园 - 俩醒叁醉

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)同