1、如何用js实现跨域获取cookie
正常情况下,浏览器禁止跨域获取cookie
一般通过sso服务可以实现取得跨域cookie,思路如下:
域A页面访问位于域A的服务器,对权限进行验证
域A服务器于域B服务器通信,记录一个唯一的加密串用作身份验证域(并将cookie信息发送给域B服务器)
域A服务器返回302跳转,跳转到域B下,并将加密串作为url的一部分
页面由域A跳转到域B,域B服务器通过加密串获取到事先从域A服务器上得到的cookie信息,并在响应头中添加set-cookie字段设置cookie
2、如何跨域传递 cookie
设置 Allow-Control-Allow-Credentials ,使得跨域可以带 Cookie ;同时要设置 Allow-Control-Allow-Origin ,此时不能用通配符。
3、什么是cookie跨域问题
在Cookie规范上说,一个cookie只能用于一个域名,不能够发给其它的域名。因此版,如果在浏览器中对权一个域名设置了一个cookie,这个cookie对于其它的域名将无效。如果你想让你的用户从你的站点中的其中一个进行登录,同时也可以在其它域名上进行登录,这可真是一个大难题。这就是跨域问题。
4、Java cookie的跨域问题?怎么在前端域名下添加cookie
假设你的前端站点域名为www.xxx.com 后端数据接口域名为 api.xxx.com
通常有以下2种解决方案
cookie写入的时候写入xxx.com域下不要写到www.xxx.com或者api.xxx.com下
在www.xxx.com中配置反向代理,将www.xxx.com/api代理到api.xxx.com,然后cookie就正常的写到www.xxx.com域下就可以了
5、jsp和php跨域共享cookie,代码如下,jsp中设置cookie,php读取不到
aa.accs.com和bb.accs.com属于不同的domain。你可以试试在java中设置domain为:
.accs.com
或者
accs.com
6、如何删除跨域的cookie
服务器端删除跨域cookie,思路是新建一个同名的Cookie,然后指定要删除的域名,Expires属性的时间小于当前时间即可,然后添加到Response.Cookies里边,原来的Cookie即可置空。
HttpCookie myCookie = Request.Cookies["userInfo"];
if (myCookie != null)
{
myCookie.Domain = "a.domain";
myCookie.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(myCookie);
}
7、单点登录其实就是在cookie保存一个token,但是cookie不能跨域啊?
同一平台的两个子系统,一般拥有相同的二级域名。只要将cookie的域名指定为此二内级域名,那么cookie在这两容个子系统内都适用。
例如:系统A的域名为a.example.com,系统B的域名为b.example.com。将单点登录票据cookie的域名指定为example.com,那么访问系统A或系统B浏览器都会自动带上此cookie。
即便两个子系统拥有完全不同的域名,也可以有其他解决方案,例如CAS的TGT+ST。
8、post不发送跨域cookies
cookie是不能跨域的,那些能获取你相关信息的是因为加入了百度联盟或者广告联盟,各自网内站会容自动提交你的一些cookie信息给百度或者联盟,比如你搜了什么,最近多逛哪些网站。然后百度把肌互冠就攉脚圭协氦茅这些cookie共享给联盟里的网站。
不过这样做的不多,通常是百度广告直接自己分析这些数据。
9、js控制cookie跨域
例:a.b.com和c.b.com两个站,建立方式如下: a.b.com站下建a.html。关键代码如下: <script type="text/javascript"> function setCookie(c_name,value,expiredays) { var exdate=new Date(); exdate.setDate(exdate.getDate()+expiredays); alert(exdate.getDate()+expiredays); document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString())+";path=/;domain=b.com"; } window.onload=function(){ setCookie("listallwjh","sfwjh"); alert("Cookie设置成功!"); } </script> c.b.com站下建a.html。关键代码如下 <script> function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "="); if (c_start!=-1) { c_start=c_start + c_name.length+1 ; c_end=document.cookie.indexOf(";",c_start); if (c_end==-1) c_end=document.cookie.length; return unescape(document.cookie.substring(c_start,c_end)); } } return ""; } window.onload=function(){ var c_name="listallwjh"; if(getCookie("listallwjh")!=null){ alert(getCookie("listallwjh")); } } </script> 这两个一个也面是设置,一个是取,只要保证两个规则一样,就行。运行,结果:OK! 注:这两个方法有时候也可以写在一起,先判断cookie是否存在,在创建
10、cookie跨域,二级域名之间如何共享
|TP5解决方案
// +----------------------------------------------------------------------
// | Cookie设置
// +----------------------------------------------------------------------
'cookie' => [
// cookie 名称前缀
'prefix' => '',
// cookie 保存时间
'expire' => 0,
// cookie 保存路径
'path' => '/',
// cookie 有效域名
'domain' => '', // 这里是重点
// cookie 启用安全传输
'secure' => false,
// httponly设置
'httponly' => '',
// 是否使用 setcookie
'setcookie' => true,
],
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
其它
cookis 设置,读取方法,跨域[二级域名]
$time =30;
$domain ='.111cn.net';
setcookie("abcde","aaaaaa");//最简单的cookie设置方法
setcookie('load','www.111cn.net',time()+3600*24,'/','.111cn.net'); //这里可以设置二级域名
$cookis = $_COOKIE['loadDomain'];//读取域名
print_r( $cookis );
/*
来看几个例子:
简单的:
SetCookie("MyCookie", "Value of MyCookie");
带失效时间的:
SetCookie("WithExpire", "Expire in 1 hour", time()+3600);//3600秒=1小时
什么都有的:
SetCookie("FullCookie", "Full cookie value", time()+3600, "/forum", ".111cn.net", 1);
*/
?>
<script language="javascript教程">
function setcookie(name,days)
{
var url = document.domain;
var exp = new Date();
exp.setTime(exp.getTime() + days*24*60*60*1000);
document.cookie = name + "="+ escape(url) +";expires="+ exp.toGMTString();
}
function getcookie(name)
{
var arr = document.cookie.match(new RegExp("[sS]*"+ name +"=([^;]*)"));
alert(arr);
if(arr != null)
return unescape(arr[1]);
return null;
}
</script>
//php教程 cookies
//asp教程 cookies
Response.Cookies("Uto")("UtorName")=UtorName
Response.Cookies("Uto")("UtorPwd")=UtorPwd
Response.Cookies("Uto").Domain="utoper.com"
Response.Cookies("Uto").Secure =False