项目中出现多个域名下的Cookie
前言:我们在查看一个项目的Cookie时,有时会看到多个域名下的Cookie,如下图:

其中一种常见的原因是:因为我们在项目中引用了另一个项目的资源。如下图:

重点:浏览器的一种默认机制:如果我们引用了另一个项目的资源,那么该项目域下的Cookie对本项目可见;但是虽然可见,但依然,不可跨域访问和设置Cookie。
那么我们如何去模仿一下这个效果呢?
实验方案一:根据默认机制,我们需要2个项目,A和B,在A里建一个可以创建A对应域名:a.com的Cookie的JS:test.js,在B项目里添加A项目的资源:
1-项目A-test.js:
alert(1);
$(function () {
alert(2);
$.cookie('the12345555', 'value123', { expires: 7, domain: 'a.com', path: '/' });
});
2-项目B-common.js添加A项目资源:
var script = document.createElement('script');
script.src = "https://mstyle1.tbdress.com/script/usercenter/test.js";
script.type = "text/javascript";
script.async = true;
document.head.appendChild(script);
最后访问B项目测试效果:我们可能会遇到浏览器的提示:blocked devtools 或者 request may be blocked 请参考解决访问:https://community.akamai.com/customers/s/article/Blocking-Requests-Other-Hidden-Chrome-Developer-Tools?language=en_US
也可以在谷歌浏览器打开开发者工具F12,在按F1打开设置页面如下,大家试试效果吧:

测试结果:有弹框,但是cookie设置失败! 但是我们看到了a项目下的cookie,只是没有添加新的cookie成功。 这是因为新的cookie创建的方式是靠B引用A,在B里执行了域名在A下的Cookie,属于跨域设置Cookie,最后的结果必然就失败了。
根据上面失败的原因改进实验:
实验方案二:我们需要2个项目,A和B,在A里建一个可以创建A对应域名:a.com的Cookie的JS:test.js,在A项目里引用test.js(让创建方法执行在A项目中),在B项目里添加A项目的资源test.js,其实可以是任一资源,不一定在引用test.js,即使引用了,也会跨域设置失败,真正成功的还是靠A项目自己执行的效果。 思路就是这样了,大家自己测试哈。
实验方案三:我们需要2个项目,A和B, B随便引用A的一资源,同时B发起一个异步请求到A中,让A在程序中创建A的Cookie,由于B引用了A的资源,那么A自己创建的Cookie对B可见。 自己实现哈。
项目中出现多个域名下的Cookie的更多相关文章
- laravel 中 同个主域名下,多个项目共享session登录状态
共享session的前提是session在一个公共的地方,比如database,redis等,laravel框架提供了很大驱动选择: 这里只需要在配置文件里配置三个地方即可 'driver' => ...
- Vue 项目中遇到的跨域问题及解决方法
原文:https://www.jb51.net/article/137278.htm 问题描述 前端 vue 框架,跨域问题后台加这段代码 header("Access-Control-Al ...
- 相同域名下的cookie污染
问题描述 本地用同一个tomcat调试两个相同框架的不同项目,在同一个浏览器界面里切换时,A项目的登录会把B项目的登录给踢掉,翻反过来亦如此.通过查看浏览器cookie,发现两个项目的cookie完全 ...
- 以整体思维看问题:解决单页应用,系统角色请求覆盖身份唯一标识(本项目中是session_id命名的)发送请求问题
以前都是开始一段废话的,现在直接进入主题,首先介绍一下一些概念: 单页应用: 优点: 具有桌面应用的即时性.网站的可移植性和可访问性. 用户体验好.快,内容的改变不需要重新加载整个页面,web应用更具 ...
- Vue+webpack项目中实现跨域的http请求
目前Vue项目中对json数据的请求一般使用两个插件vue-resource和axios, 但vue-resource已经不再维护, 而axios是官方推荐的且npm下载量已经170多万,github ...
- Atitit.css 规范 bem 项目中 CSS 的组织和管理
Atitit.css 规范 bem 项目中 CSS 的组织和管理 1. 什么是BEM?1 1.1. 块(Block)2 1.2. 元素(Element)2 1.3. BEM树(和DOM树类似).3 ...
- 如何在ASP.NET Core中实现CORS跨域
注:下载本文的完整代码示例请访问 > How to enable CORS(Cross-origin resource sharing) in ASP.NET Core 如何在ASP.NET C ...
- Flash+fms视频录制在项目中的实际应用
Flash+fms视频录制在项目中的实际应用 前言:以下只是记录本人在项目中的应用,而flash+fms视频录制有多种实现方式,具体可根据实际情况而定! 1:古人云:工欲善其事,必先利其器,首先安装f ...
- 项目中关于ajax jsonp的使用
项目中关于ajax jsonp的使用,出现了问题:可以成功获得请求结果,但没有执行success方法总算搞定了,记录一下 function TestAjax() { $.ajax({ ...
随机推荐
- Python 爬虫从入门到进阶之路(四)
之前的文章我们做了一个简单的例子爬取了百度首页的 html,我们用到的是 urlopen 来打开请求,它是一个特殊的opener(也就是模块帮我们构建好的).但是基本的 urlopen() 方法不支持 ...
- NetCore WebAPI开发探索
一.创建项目 新建api项目: 建好之后,一个默认的控制器已经有了: 运行就可以直接访问get接口获取数据: 二.跨平台部署 部署方面,微软已经完善的很好了,基本上算是傻瓜式操作.项目右键选择发布 ...
- RabbitMQ的第一次亲密接触
企业应用系统,如果系统之间的通信.集成与整合,尤其当面临异构系统时,那么需要分布式的调用与通信.系统中一般会有很多对实时性要求不高但零零碎碎且耗时的地方,比如发送短信,邮件提醒,记录用户操作日志等,在 ...
- ES6-对象赋值,key值得构建,is()方法对比对象,assign()合并对象
ES6对象赋值: // es5 let name = "ananiah"; let skill ='web'; let obj = {name:name,skill:skill}; ...
- [b0043] python 归纳 (二八)_python测试使用快速上手
参考 Python必会的单元测试框架 —— unittest # -*- coding: utf-8 -*- """ 测试代码组织,整理( 非可执行) "&qu ...
- linux下关闭selinux
找到 /etc/sysconfig/selinux 文件 修改 SELINUX=enable 使之 SELINUX=disable 重启 reboot
- 002.SQLServer数据库镜像高可用简介
一 数据库镜像简介 1.1 数据库镜像概述 数据库镜像维护一个数据库的两个副本,这两个副本必须驻留在不同的 SQL Server 数据库引擎服务器实例上. 通常,这些服务器实例驻留在不同位置的计算机上 ...
- Less(4)
1.先判断注入类型 (1)首先看到要求,要求传一个ID参数,并且要求是数字型的:?id=1 (2)再输入?id=1' 界面无变化 (3)再输入?id=1'' 界面还是无变化, (4)再输入?id=1 ...
- Re-爬楼梯
题目地址 https://dn.jarvisoj.com/challengefiles/CFF_100.rar.dbeee1536c0a5ef5844f42c93602aae5 看看功能,看样子要爬到 ...
- 2019-2020-1 20199305《Linux内核原理与分析》第一周作业
进入Linux的世界 1.何为Linux? Linux是一个操作系统. 2.Linux的由来 芬兰赫尔辛基大学的研究生 Linus Torvalds接触Unix时认为其费用不友好,决定自己开发一个操作 ...