今天有时间,看了一下cookie跨域问题。总结一下
问题引入:淘宝公司有两个域名:taobao.com 和 tmall.com。但是淘宝和tmall共用一套会员体系,因此就存在跨域访问的问题。某用户在taobao.com下登录后(此时taobao域下的cookie中会保存该用户已经登录的信息),然后该用户访问tmall.com,但是由于跨域cookie不能访问的问题。会导致用户在tmall域下需要重新登录。淘宝是如何解决这个问题的呢?具体描述参见:淘宝如何跨域获取Cookie分析 。
淘宝如何跨域获取Cookie分析 一文中分析了淘宝如何保持不同域下cookie的一致性。在tmall.com加载的时候,发送一个ajax请求。通过jsonp的方式获取taobao域下公用的cookie。然后通过js将这些公用的cookie设置到tmall域下。解决了cookie不能公用的问题。
下面对其中使用的一些技术做一些解释。
1.同源策略
所谓:同源策略(同源指域名、协议、端口相同,一个著名的安全策略),一般来说位于server1.example.com的网页无法与不是server1.example.com的服务器沟通,而HTML的<script>元素是一个例外。利用<script>元素的这个开放策略,网页可以得到从其他来源动态产生的JSON资料,而这种使用模式就是所谓的JSONP。
2.JSONP
JSONP(JSON with Padding)是资料格式JSON的一种“使用模式”,可以让网页从别的网域要资料。另一个解决这个万恶他的方式是跨来源资料共享。
关于JSONP的一个详细介绍参见《关于JSONP》,《javascript(jquery getJSON) 跨域的操作(Jsonp和java操作例子)》一文中详细描述了javascript跨域操作的方法。
3.关于js回调函数:
《js回调函数(callback)》一文详细描述了js回调函数的意义:
4.js设置cookie的方法
ps:
《通过设置P3P解决跨域不能设置cookie的问题》一文描述了跨域设置cookie的问题,这其中要注意的点:这里的跨域设置cookie是指:
所谓的cookie跨域,并不是taobao.com试图去设置tmall.com的cookie,而是taobao.com试图去设置taobao.com的cookie,但是这个过程是在一个tmall.com的域里进行的。
相关推荐
JSP使用ajaxFileUpload.js实现跨域问题.docx
解决sockJs实现的websocket的跨域问题,后台使用的springboot框架,maven
因为cookie在跨域的情况下,浏览器根本不允许互相访问的限制,为了突破这个限制,所以有了以下这个实现方案,使用postmessage和localstorage进行数据跨域共享。 原理比较简单,但是遇到的坑也不少,这里梳理一下,做...
解决springboot实现跨域session共享问题,防止sql注入。可以更有效的解决token问题,欢迎下载,有问题可以再评论下方留言,及时解答!!加群:687942640
实验室大作业购物商城示范
框架完美解决了iframe之间的跨域通讯。底层技术采用window.name转换代理实现
什么是最好的跨域实现方式?nginx实现跨域访问遇到的系统环境问题解决方法,踩过的坑分享给大家
主要介绍了JSP使用ajaxFileUpload.js实现跨域问题的相关内容,本文介绍非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧
通过这个插件,可以实现不同域名的双向通信问题,内含demo 配套文章:http://blog.csdn.net/mycwq/article/details/16344171
cookie跨域后端代码,主要解决跨域的问题,在servlet部分,供初学者使用
主要介绍了Spring Boot 通过CORS实现跨域,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
易语言ISP接口实现跨域源码,ISP接口实现跨域,框架跨域,sub_COM调用,sub_CLSID从文本,sub_A2W,sub_ToDword,DLL_CLSIDFromString,DLL_MultiByteToWideChar,DLL_指针从字节集,DLL_指针从对象,DLL_动态调用子程序
H5的video标签跨域.HTML的video标签跨域 我们都知道HTML video标签能播放视频 但是如果你的video要播放的是非当前域名下的视频文件,这就要跨域播放视频, 应该如何实现呢?
主要介绍了React+Spring实现跨域问题的完美解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
问题 在之前的分享的跨域资源共享的文章中,有提到... 基于与合作方后台的配合,利用nginx方向代理来满足浏览器的同源策略来实现跨域 实现方法 反向代理概念 反向代理(Reverse Proxy)方式是指以代理服务器来接受In
Dubbox跨域请求,配置CORS服务来解决跨域问题,亲测可用。
跨域访问解决方案,关于跨域访问cookie的资料
自从入了 Vue 之后,一直在用 axios 这个库来做...下面这篇文章主要给大家介绍了关于axios中cookie跨域及相关配置的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起看看吧。
.net WebUploadTest实现跨域浏览
比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入cookie(记录着用户上下文信息),应用想要获取门户下的cookie,这就产生了cookie跨域的问题。 二、介绍一下cookiev...