跨域写cookie
假设a站想往b站写cookie,那么目前有两种方案,参考如下:
第一种(使用jsonp):
a站js代码如下:
$.ajax({
url: 'http://www.b.com/jsonp.jsp?domain=.b.com&value=123',
async: false,
dataType: 'jsonp',
jsonp:'callback',
jsonpCallback:"success_jsonpCallback",
success: function(result){
console.log('result======' + result.info);
},
error: function(result){
console.log('fail');
}
});
b站jsp代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.net.*" %>
<%
String domain = request.getParameter("domain");
String value = request.getParameter("value");
String callback = request.getParameter("callback");
// 设置 name 和 url cookie
Cookie name = new Cookie("test", value); // 设置cookie过期时间为24小时。
name.setMaxAge(60*60*24);
name.setPath("/");
name.setDomain(domain);
// 在响应头部添加cookie
response.addCookie( name );
out.write( callback + "({\"info\":\"success\"})");
%>
第二种方案:
a站页面代码:
<html>
<head>
<meta charset="utf-8">
<title>a站页面</title>
</head>
<body>
<div>
<div>
<button id = "set_cookie_btn" type="button" >写cookie</button>
</div>
<div>
<button id = "syn_cookie_btn" type="button" >同步cookie</button>
</div>
<div id="cookie_iframe">
</div>
<script src="jquery-3.2.1.min.js"></script>
<script>
(function(){
function init(){
console.log(window.location);
$('#set_cookie_btn').click(setCookie);
$('#syn_cookie_btn').click(synCookie);
} /**
* 写测试cookie
*/
function setCookie(){
document.cookie= "test=123;path=/;domain=.b.com";
} function synCookie(){
//<iframe src='http://www.b.com/setCookies.html?p=123' width='100' height='100' style="display:none"></iframe>
var value = getCookie("test");
var src = "http://www.b.com/setCookies.html?test="+value;
var iframeInfo = "<iframe src= "+src+" width='100' height='100' style='display:none'></iframe>";
$('#cookie_iframe').html(iframeInfo);
} function getCookie(cname){
var _cookies = document.cookie.split(";");
var _ran = "";
for (var i = 0; i < _cookies.length; i++) {
var _cookie = _cookies[i];
if (_cookie.split("=")[0].trim() == cname) {
_ran = _cookie.substring(_cookie.indexOf("=")+1).trim();
break;
}
}
return _ran;
}
init();
})();
</script> </body>
</html>
b站页面代码:
<html>
<head>
<meta charset="utf-8">
<title>b站页面</title>
</head>
<body>
<script src="jquery-3.2.1.min.js"></script>
<script>
var url = location.href;
var get = url.substring(url.indexOf("test"));//获取变量和变量值
var idx = get.indexOf("=");//获取变量名长度
if (idx != -1) {
var name = get.substring(0, idx);//获取变量名
var val = get.substring(idx + 1);//获取变量值
setCookie(name, val,".b.com");//创建Cookie
}
</script>
</body>
</html>
跨域写cookie的更多相关文章
- PHP 跨域写cookie
实际工作中,类似这样的要求很多,比如说,我们有两个域名,我们想实现在一个域名登录后,能自动完成另一个域名的登录,也就是PASSPORT的功能. 我只写一个大概,为了测试的方便,先编辑hosts文件,加 ...
- CP="CAO PSA OUR" 用P3P header解决iframe跨域访问cookie
1.IE浏览器iframe跨域丢失Session问题 在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的因此,网上 ...
- SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析
最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1.jquery ajax跨 ...
- 通过设置P3P头来实现跨域访问COOKIE
通过设置P3P头来实现跨域访问COOKIE 实际工作中,类似这样的要求很多,比如说,我们有两个域名,我们想实现在一个域名登录后,能自动完成另一个域名的登录,也就是PASSPORT的功能. 我只写一个大 ...
- 跨域共享cookie和跨域共享session
转载自:http://blog.csdn.net/ahhsxy/article/details/7356128 这里所说的跨域,是指跨二级域名,而且这些域名对应的应用都在同一个app上, 比如我有以下 ...
- 京东商城跨域设置Cookie实现SSO单点登陆过程
可以先看下这边文章:http://blog.chinaunix.net/uid-25508399-id-3431705.html 1.点击首页的登陆按钮跳转到京东的登陆中心https://pass ...
- 跨域共享cookie
1. JSP中Cookie的读写 Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息.Cookie还有一些附加信息,比如域名.有效时间.注释等等. 下面 ...
- PHP 通过设置P3P头来实现跨域访问COOKIE
CentOS的系统(Linux 内核) 编辑HOST vi /etc/hosts 加入127.0.0.1 www.a.com127.0.0.1 www.b.com 首先:创建 a_setcookie. ...
- 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法
单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...
随机推荐
- php面试题,百度答案
一公司: 1.@当将其放置在一个PHP表达式之前有什么作用? 2.用foreach把$arr=array(1,2,3,4)每个values值乘2输出: 3.PHP定界符如何使用? 4.说出mysql_ ...
- hadoop排序 -- 全排序
目录 一.关于Reducer全排序 1.1. 什么叫全排序 1.2. 分区的标准是什么 二.全排序的三种方式 2.1. 一个Reducer 2.2. 自定义分区函数 2.3. 采样 一.关于Reduc ...
- microPython环境安装及使用
1.ESP8266_12E(NodeMCU1.0)(AI Thinker)板Arduino IDE环境安装 (1)方法1(自动安装,windows,mac,linux平台都可) http://ardu ...
- sqlserver之group by 与over函数
group by 函数主要用来对数据进行分组,over()函数则是一个“开窗函数”,它更多的是与聚合函数如:sum().max().min().avg().count()等函数以及排名函数如:row_ ...
- 欧几里得算法/欧几里得扩展算法-python
说在开头. 出于对欧几里得的尊重,先简单介(cou)绍(ge)一(zi)下(shu).. 欧几里得,古希腊人,数学家.他活跃于托勒密一世时期的亚历山大里亚,被称为“几何之父”. 他最著名的著作< ...
- 201552-53 《Java程序设计》第五周问题汇总
201552-53 <Java程序设计>第五周问题汇总 1.编译时,终端显示: 注:XXX.java使用了未经检查或不安全的操作,如何解决? 解答:并不是错误,可以忽视. 2.构造函数与类 ...
- 20155233 2006-2007-2 《Java程序设计》第2周学习总结
20155233 2006-2007-2 <Java程序设计>第2周学习总结 教材学习内容总结 本章主要学习Java的基础语法,这些语法在C语言的学习中基本上都涉及到过,基本上,Java可 ...
- 20155317 王新玮 2016-2017-2 《Java程序设计》第5周学习总结
20155317 王新玮 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 异常处理 & Collection与Map 异常继承架构 错误的对象继承ja ...
- kali更新源相关 -- 没有release文件、签名无效、404
kali更新源相关 -- 没有release文件.签名无效.404 这个随笔主要是处理Mac下使用VMare虚拟机安装Kali时候我遇到的一些关于更新源的问题 (因为本人为了这个问题折腾了四五个小时, ...
- 实验五 Java网络编程
实验五 Java网络编程 实验五 Java网络编程 实验五所涉及的密码学算法及编程思路 ## Java对称加密-DES算法 (1) 获取密钥生成器 KeyGenerator kg=KeyGenerat ...