跨域写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图片上传存储源码,可实现预览
<?php header("content-Type: text/html; charset=gb2312"); $uptypes=array('image/jpg', // ...
- 2015526 《Java程序设计》实验二实验报告
2015526 <Java程序设计>实验二实验报告 一.单元测试和TDD 用程序解决问题时,要学会写以下三种代码: 伪代码 产品代码 测试代码 正确的顺序应为:伪代码(思路)→ 测试代码( ...
- 20155304 2016-2017-2 《Java程序设计》实验三 敏捷开发与XP实践
实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软件工程包括下列领 ...
- Ubuntu + apache + Mysql +php
发生了乱码问题: 打开apache配置文件: sudo gedit /etc/apache2/apache2.conf,在最后面加上:AddDefaultCharset UTF-8,如果还乱码,再将U ...
- 【转载】GitHub详解
原文:GitHub详解 GitHub详解 GitHub 是一个共享虚拟主机服务,用于存放使用Git版本控制的软件代码和内容项目.它由GitHub公司(曾称Logical Awesome)的开发者Chr ...
- C#之Ref,Out以及TryParse()的用法
ref和out用法很简单,我记下来也提醒自己要用更好的方式去写代码,不要让代码过于臃肿,让人看得头痛.直接写 ref:ref关键字就是让参数进行传递,但是需要初始化,而out不需要初始化参数 ref用 ...
- Python中的矩阵操作
Numpy 通过观察Python的自有数据类型,我们可以发现Python原生并不提供多维数组的操作,那么为了处理矩阵,就需要使用第三方提供的相关的包. NumPy 是一个非常优秀的提供矩阵操作的包.N ...
- Mysql取消SSH链接和恢复SSH链接
取消SSH链接//键入密码,链接上mysql mysql -u root -p USE MYSQL; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIF ...
- ----------BMI指数小程序----------
# 1.创建并输出菜单, 菜单是不可变的. 所以使用元组# menus = ("1, 录入", "2, 查询", "3, 删除", &quo ...
- 强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods)
强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods) 学习笔记: Reinforcement Learning: An Introduction, Richa ...