今天有时间,看了一下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的域里进行的。
相关推荐
在这个场景中,我们关注的是Django应用中的cookie跨域问题,这通常在开发多站点或者前后端分离的项目中出现。在"实验室大作业购物商城示范"这样的项目中,处理好cookie跨域能够确保用户登录状态等敏感信息在不同域...
### JSP 使用 ajaxFileUpload.js 实现跨域问题解析 #### 一、背景与概述 在Web开发中,跨域问题一直是开发者面临的一个常见难题。跨域问题是由于浏览器的同源策略导致的,该策略限制了一个域下的JavaScript脚本...
为了解决这个问题,我们可以借助SockJS——一个提供跨域WebSocket兼容性的库。SockJS的目标是为浏览器创建一个透明的、低延迟、全双工的跨域通信通道。 SpringBoot是基于Spring框架的轻量级开发工具,可以方便地...
本文将深入探讨如何“完美解决iframe跨域问题”,并介绍其底层的`window.name`转换代理实现。 **一、iframe跨域的基本概念** 1. **什么是iframe**:iframe是一种HTML元素,允许在单个网页中嵌入另一个网页。它通过...
因为cookie在跨域的情况下,浏览器根本不允许互相访问的限制,为了突破这个限制,所以有了以下这个实现方案,使用postmessage和localstorage进行数据跨域共享。 原理比较简单,但是遇到的坑也不少,这里梳理一下,做...
它通过创建隐藏的IFrame和利用window.postMessage API来实现跨域通信。window.postMessage是HTML5引入的一个API,允许来自不同源的窗口进行通信。 使用jcrossdomain的步骤如下: 1. **引入插件**:在两个域的页面...
当我们在Cesium中尝试加载由Geoserver提供的地图服务时,可能会遇到跨域问题。这个问题主要是由于浏览器的安全策略限制了不同源之间的通信。以下是对这个问题的详细解释和解决方法。 首先,理解“跨域”是什么至关...
为了实现跨域session共享,我们可以使用例如Redis或Memcached这样的分布式缓存来存储session。首先,需要添加相应的依赖到`pom.xml`或`build.gradle`文件中,然后配置Spring Boot的session存储机制: ```java @...
### 前端后端跨域问题解析及解决方案 #### 跨域问题概述 跨域问题,即Cross-Origin Resource Sharing(CORS),是指浏览器出于安全考虑,在不同源之间执行网络请求时实施的一种限制机制。根据同源策略的规定,只有...
在开发Web应用时,我们经常会遇到跨域问题,特别是在使用Vue.js等前端框架与后端API进行交互时。Axios作为一个流行的JavaScript库,用于处理HTTP请求,它在处理跨域请求时,特别是涉及到Cookie时,有一些特殊的配置...
首先,我们需要理解CORS(Cross-Origin Resource Sharing,跨源资源共享)机制,它是现代浏览器用来安全地实现跨域请求的一种方式。CORS通过在HTTP响应头中添加`Access-Control-Allow-Origin`字段来指定哪些源可以...
在IT行业中,尤其是在Web开发领域,跨域问题是一个常见的挑战,尤其当涉及到GIS(地理信息系统)服务时,如Geoserver。Geoserver是一个开源的、基于Java的服务器,用于发布和管理地理空间数据。当从一个源(如浏览器...
本文将详细介绍如何使用axios在Vue.js项目中实现数据交互,并针对跨域问题给出解决方案。 首先,要在Vue.js项目中使用axios进行数据交互,首先需要安装axios模块。这可以通过npm或yarn来完成: ```bash npm ...
Nginx 是一款轻量级的 Web 服务器、反向代理服务器和电子邮件代理服务器,然而在实现跨域访问时,会遇到一些问题。本文将讨论 Nginx 实现跨域访问遇到的系统环境问题解决方法,并分享踩过的坑。 跨域是什么? -----...
为了解决Tomcat的跨域问题,我们需要理解CORS的工作原理,并通过配置Tomcat来允许特定的跨域请求。 首先,让我们理解一下CORS的基本概念。CORS是一种W3C标准,它允许浏览器通过在HTTP头中添加`Access-Control-Allow...
然而,当使用Cesium进行3D地球渲染时,我们可能需要加载来自不同源的数据,如瓦片、模型、纹理等,这就涉及到跨域问题。本篇文章将详细介绍如何解决Cesium在使用Tomcat服务器时的跨域问题。 首先,我们需要理解...
window.name 解决跨域问题的文档 window.name 传输技术是 Thomas Frank 发明的,旨在解决 cookie 的一些劣势,例如每个域名 4 x 20 Kb 的限制、数据只能是字符串、设置和获取 cookie 语法的复杂等等。后来,Kris ...
跨域问题在Web开发中是一项重要的概念,尤其是在使用JavaScript进行AJAX请求时,它涉及到浏览器的安全策略和同源政策(Same-Origin Policy)。同源政策是浏览器为了保护用户信息安全而实施的一项安全措施,它限制了...
### Ajax跨域问题及其解决方案 #### 一、Ajax跨域问题概述 在现代Web开发中,前后端分离架构越来越流行。这种模式下,前端页面与后端服务通常部署在不同的服务器上,甚至可能位于不同的域名下。当浏览器发起对不同...
Java CXF Webservice接口在处理Web服务时,可能会遇到跨域问题,这通常是由于浏览器的安全策略限制了不同源之间的通信。解决这个问题的关键在于理解和应用CORS(Cross-Origin Resource Sharing)机制。CORS允许...