第三方cookie和第一方的cookie并不是技术上的区分,而是业务上的区别,我很赞同这句话,因为我觉得第三方和第一方都是一个相对的概念,其实我们操作的都是自己域下的cookie,只是在某种情景下的操作,我们称之为第三方域下cookie的操作

-------题记

注:此处讲的是跨一级域操作cookie,如果只是跨二级域的话,很简单,只需要设置cookie的domian为一级域名,并辅以path属性的设置即可;

关于跨域,首先我们要明确一个概念,根据安全策略,我们永远不可能操作第三域的cookie,比如在A域的页面试图去读取一个domian为B域的cookie;或者在域A的页面试图通过域A页面的JS或者来自域A的http请求返回让浏览器去写入一个domain为B域的cookie;

到底能不能跨域,跨的是什么域,我觉得这个是我们需要最开始弄清楚的地方,是后面操作一起的基础。因为有些事我们可以努力,有些事我们努力了也不会有结果。

记得曾经看到过一篇文章讲到,第三方cookie和第一方的cookie并不是技术上的区分,而是业务上的区别,我很赞同这句话。因为我觉得第三方和第一方都是一个相对的概念,其实我们操作的都是自己域下的cookie,只是在某种情景下的操作,我们称之为第三方域下cookie的操作。当然在这儿,我们假设我们已经对第一方和第三方cookie的定义有了完整准确的理解。

cookie的读写场景一般有两种,一般分为前台的JS的操作,和通过http请求传递到后台的读,及http响应的写操作。

前台的JS的读写是受同源策略限制的,我们永远只能将要写的cookie设置和当前载入js的文档为同一个域,就算是通过iframe引入的页面中的JS视图去读写的cookie也是只能和iframe的src是同一个域。

第二种一般发生在页面中包含了另外一个域的请求,比如iframe,img,script都可以。http请求一般都是携带cookie的,这个毋庸置疑,而且只能携带和请求同一个域下的cookie,但是当这个请求发生在另外一个域的页面中的时候,就会产生问题,这个时候对于主页面来说,你在我的页面请求读取不是我域下的cookie,也就是说你想跨域,这个时候他就不会让你这么轻易的得逞,关于这种情况的分析,下面会讲到。如果一个跨域的请求返回了一个写cookie的指令,前提是你写的是和自己请求的域是同一个域的cookie,如果是其他域的,就算和主域是同一个域,想都别想。这个时候你也不是这么容易办到的,因为对于主域来说,你又在想跨我的域来操作,肯定也不是那么容易让你得逞的。

现在我们先来假设这样一个场景,我们访问一个域A的页面(我们成为A_1页面),A_1页面的底部通过iframe引入一个域B的页面(我们称为B_1页面);

此时我们关心的是这个发向域B的请求会不会携带域B的cookie和来自域B的响应能不能在导航栏为域A的页面的情况下写入cookie;

因为对于A页面来说,此时在来自它的window中有一个关于域B的cookie操作请求,此时就发生了我们常说的跨域操作cookie的情况。

我们首先先拿出结果,在一般情况下,也就是没有服务端p3p的干预的情况下,B_1的请求中是不会携带域B的cookie的,域A的就更别想了。而且B_1的响应中携带的cookie是能够返回的。但是不能写到内存或者硬盘中的。

但是在火狐中就完全不存在这个问题了,完全可以正常操作。

对于火狐中不存在这个问题就没有什么好讲的了,IE中不支持的话我们就得分析问题去解决了。

在这里有一个概念就不得不提了,因为没有这个概念,我们上面谈的问题都不是问题,那就是p3p,关于这个概念,或者称之为协议,我们可以上网了解。它大概可以分为两部分,一部分是浏览器端用户设置的隐私偏好(有这个部分的前提是浏览器支持p3p),和服务端的隐私申明。比如用户可以在IE浏览器中设置隐私级别,默认级别一般都是中。一部分是服务端在头信息关于当前网页隐私安全性的声明;浏览器在最后执行的时候会将隐私安全性的生命和用户设置的做对比,如果不匹配的话,会告知用户,由用户选择安全性的执行方案。

既然用户已经选择了不去允许域B的cookie写入,IE认为是不安全的,那么我们能做的修改就是修改服务端的隐私安全性声明了,具体怎么去加这个p3p的声明,网上有很多方法,百度一下就行,比如在response的header中添加一个头信息:P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"

如果你看到这篇文章,发现有什么谬误之处,还请留言斧正,将万分感谢!

关于cookie的跨域(一级域)相关推荐

  1. localStorage和cookie的跨域解决方案

    localStorage和cookie的跨域解决方案 参考文章: (1)localStorage和cookie的跨域解决方案 (2)https://www.cnblogs.com/vsmart/p/9 ...

  2. 前端cookie 放到请求头_ajax请求携带cookie和自定义请求头header(跨域和同域)

    错误: 1.ajax请求时是不会自动带上cookie的,要是想让他带上的话,必须设置withCredential为true. 正确: 1.ajax同域请求下,ajax会自动带上同源的cookie: 2 ...

  3. java cookie p3p_利用P3P实现单点登录和COOKIE的跨域读写

    首先说明,同一个顶级域名的情况我不说什么,很简单,就一个Cookie的Domain属性. 下面来说顶级域名不同的情况. 有时候我们会有这么一种需求:当我们登录A网站www.a.com时,同时也要能登录 ...

  4. nginx实现跨域访问(案例cookie实现跨域,)多方案实现

    案例cookie实现跨域 (我的博客里有更新) 跨域,顾名思义,个人理解就是:任意两个url只要协议.域名.端口有任何一个不同,都被当作是不同的域,相互访问就会有跨域问题. 方案一(前端需要实现跨域) ...

  5. 将一个域下的cookie传到另一个域_单点登录那些事儿(二)同域下的单点登录

    单点登录(SSO,Single Sign On)对我们来说已经不陌生了,一次登录,处处登录.企业旗下都是自己的应用系统,所有的应用系统都使用同一个一级域名,通过不同的二级域名来区分应用系统.例如:百度 ...

  6. 论文浅尝 | XQA:一个跨语言开放域问答数据集

    论文笔记整理:刘晓臻,东南大学计算机科学与工程学院本科生. Citation: Liu, J., Lin, Y., Liu, Z., & Sun, M. (2019,July). XQA: A ...

  7. mysql 跨库插入_sql 跨库和域插入数据库

    sql 跨库和域插入数据库 ; SELECT * INTO [order] FROM OPENROWSET ( 'SQLOLEDB ', '域名'; '用户名'; '密码',数据库名称.表名) 直接执 ...

  8. 省钱之道--图解域域树域林根域的含义

    省钱之道--图解域域树域林根域的含义 标签:域 域林 图解域域树域林根域的含义 域树 根域 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.ht ...

  9. 域控服务器怎么开策略,组策略(域和域服务的搭建)

    域 基本概念: 域(Domain):是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation). 信任关系是连接在域与域之间的桥梁. 域既是 Window ...

最新文章

  1. openresty 前端开发入门五之Mysql篇
  2. VS asp.net 连接64位oracle 11g
  3. oracle+事务开始+结束,Oracle事务和对象上集(视图、索引)
  4. hdu5441(2015长春网络赛E题)
  5. zookeeper 学习笔记1(转)
  6. 数据科学入门与实战:玩转pandas之四
  7. 优化器:torch.optim
  8. Atitit 命令指令的分类与权限 IMAP协议为例子 目录 1. 指令的作用的权限吧。 全局命令 未认证状态命令 未认证状态命令 选中状态指令 2 1.1. 1.在任何状态下都有效的指令(全局命
  9. IPTV系统搭建网络盒子APK和后台管理软件
  10. origin 截断y轴
  11. java全碳硬叉好不_山地自行车跑长途为什么锁死避震前叉或者用硬叉好些?
  12. python caffe框架_caffe框架基础
  13. React React组件之间的通信方式
  14. 基线、底线、顶线、中线
  15. java游戏暗金装备_暗黑2装备升级公式图解(暗金装备升级一览表)
  16. STM32 定时器主从模式,上电立即输出脉冲,输出有尖刺,解决方法
  17. 超声在肝脏扫描15cm深度时的PRF应该用多大的值?
  18. 管理Kindle的“我的剪切”
  19. 奔驰,该学习小米和华为了
  20. 学习Linux命令(13)

热门文章

  1. 压缩为王-阿里第五届中间件复赛总结
  2. 分布式全链路跟踪系统-skywalking
  3. SkyWalking安装配置,ElasticSearch存储,nexus私有maven库进行SkyWalking客户端探针的打包和拉取
  4. jQuery获取或设置元素的属性值
  5. mysql 数据库军规_MySQL 数据库开发的 36 条军规
  6. SDN学习路径——SDN架构
  7. SDN:简述对SDN架构的认识
  8. 程序员去外包的后遗症是什么
  9. acm专题三1006
  10. 2017.3.15 贾老分享有感