跨域写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 ...
随机推荐
- Ubuntu 16.04LTS 安装 Node.js stable
更新ubuntu软件源 sudo apt-get update sudo apt-get install -y python-software-properties software-properti ...
- 大数据IDEA调试flink程序
Flink在IDEA中开发是一件比较困难的事情,网上没有参考资料,就算就业说的太过笼统,不知道是会了不说还是不会瞎说,为了解决flink这个问题,本人特别做了一遍开发的简单说明.主要考虑两个问题,1. ...
- C语言堆排序
堆是一种类似二叉树的数据结构,分为最大堆和最小堆,最大堆得定义是当前节点必须大于左右子节点,堆中所有节点都要符合这个定义.最小堆反之.这一点不同于二叉树排序.假设有数组int a[10] = {90, ...
- Python3 break与continue
Infi-chu: http://www.cnblogs.com/Infi-chu/ break和continue都是中断循环的意思,但是他们的中断后的效果不同. 请看如下两个例子就懂了 ''' 这个 ...
- Could not connect to '192.168.80.145' (port 22): Connection failed的解决办法(远程连不上xshell)
问题状况表现1 这个问题一般是你 的什么配置影响了虚拟机的网卡网关设置!!!. 问题状况表现2 这个问题一般是你 的什么配置影响了虚拟机的网卡网关设置. 解决办法 网上的那些解决方案,我都试过,比如. ...
- 20155227 2016-2017-2 《Java程序设计》第二周学习总结
20155227 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 本周学习的第三章内容与以前学过的C语言有很多共通的地方,学习起来还是比较快的. 主要的内容有 ...
- 学号20155308 2016-2017-2 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
学号20155308 2016-2017-2 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验要求 使用JDK编译.运行简单的Java程序. 使用IDEA 编辑.编译 ...
- 2016-2017-2 《Java程序设计》第二周学习总结
20155319 2016-2017-2 <Java程序设计>第二周学习总结 课堂学习内容 git:版本控制 java -d bin(当地文件夹) src/Hello.java把生成的.c ...
- 20155339 《信息安全技术》实验二、Windows口令破解实验报告
20155339 <信息安全技术>实验二.Windows口令破解实验报告 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 系统环境 Windo ...
- centos7下mysql 开启远程登录
安装mysql 安装mysql就不做过多的介绍了,相信小伙伴们都可以很轻松的安装 进入mysql命令行 mysql -u用户名 -p密码 新建远程登录的用户 grant all on *.* to a ...