跨域写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 ...
随机推荐
- thinkphp+redis实现秒杀,缓存等功能
秒杀是商城常见功能 php+redis是最常见的秒杀功能 1,安装redis,根据自己的php版本安装对应的redis扩展 首先查看phpinfo();php环境信息 2,下载redis https ...
- 一起来学大数据——走进Linux之门,学习大数据的重中之重
昨天我们看了有关大数据Hadoop的一些知识点,但是要在学习大数据之前,我们还是要为大数据的环境做一些的部署. 那么,今天我们就来讲讲开启我们大数据之路的Linux,跟上我们的脚步yo~ Linux介 ...
- 【Mac】解决「无法将 chromedriver 移动到 /usr/bin 目录下」问题
问题描述 在搭建 Selenium 库 + ChromeDriver 爬虫环境时,遇到了无法将 chromedriver 移动到 /usr/bin 目录下的问题,如下图: 一查原来是因为系统有一个 S ...
- c语言实验报告(四) 从键盘输入字符串a和字符串b,并在a串中的最小元素(不含结束符)后面插入字符串b.
a串中最小元素后的字符被舍弃了. #include<stdio.h>#include<string.h>void main(){ int i,min=0; char a[2 ...
- 学习笔记二:异步FIFO
, ) //用格雷码的局限性:循环计数深度必须是2的n次幂,否则就失去了每次只变化一位的特性 (wclk,wrstn,wdata,wfull,winc,rclk,rrstn,rdata,rempt ...
- AC自动机(简单版)(施工ing)
声明 想看加强版的戳这里(施工ing,作者正努力中)~ 先贴题目吧哎~ AC自动机加强版 洛谷 P3796 题目: 洛谷 P3808 (数据范围困了我好久 TAT) 反正涉及字符串的算法都很玄学 ...
- 20155235 2016-2017-2 《Java程序设计》第十周学习总结
20155235 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 计算机网络 计算机网络由若干结点和连接这些结点的链路组成.网络中的结点可以是计算机.集线器. ...
- 百度地图api 常用 例子
功能一:获取map地图窗口的可视区域: var map = new BMap.Map("allmap"); // 创建Map实例 map.centerAndZ ...
- c++ 结构指针和双向链表
结构指针 为结构指针动态分配内存 结构中的结构 双向链表 结构指针 struct mytime { //char name[256]; int hour;//时 int min; //分 i ...
- 【LG5017】[NOIP2018pj]摆渡车
[LG5017][NOIP2018pj]摆渡车 题面 洛谷 题解 震惊!普及组竟然考斜率优化??? 当然有其他的方法 首先我们转化一下模型 此题可以变为: 在一根时间轴上有一些点,每个时间点\(i\) ...