cookie怎么跨顶级域名啊?

作者&投稿:单于饶 (若有异议请与网页底部的电邮联系)
cookie可以跨子域名吗~

你看看你cookie的path是相同的,说明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);
*/
?>

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;
}

//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

跨顶级域名
如果不是二级域名而是完全在不同顶级域名中,所在的web应用程序创建了一个cookie,想要在 其二级域名的应用程序中访问,知道靠常规反的方法是访问不了的,关键就是看看有没有方法可以访问。事实是Cookie可以在一定条件下跨域,而不是随心所欲的实现跨域。
按照常规我们需要有2个顶级域名,并且有DNS服务器才能够配置域名,否则我们是无法验证的,但是这里没有必要那么麻烦,可以通过修改hosts文件来模拟。在 c:\windows\system32\drivers\etc 中有 hosts文件,在末尾添加上

127.0.0.1
127.0.0.1
两行,就可以将本机用上面的域名访问本机回环地址了。只需要在IIS上部署一套程序,ip为本机回环地址,用两个域名分别访问就可以了。
新建三个页面,分别是 Default.aspx、SSO.ashx、GetCookie.aspx。
其中Default.aspx是 www.test1.com 的页面,访问的地址是 http://www.test1.com/Default.aspx。看一下前台代码,它没有任何后台代码

复制代码代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Admin10000.Web.Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>

<script type="text/javascript">
var _frm = document.createElement("iframe");
_frm.style.display = "none";
_frm.src = "http://www.test2.com/SSO.ashx";
document.body.appendChild(_frm);
</script>

</div>
</form>
</body>
</html>

另外一个是 SSO.ashx 页面,我们认为它是 www.test2.com 的页面,前台没有任何代码,后台代码如下:

复制代码代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.SessionState;

namespace Admin10000.Web
{
/// <summary>
/// $codebehindclassname$ 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class SSO : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
HttpCookie cookie = new HttpCookie("name", "www.Admin10000.com");
cookie.Domain = "test2.com";
cookie.Path = "/";
cookie.Expires = DateTime.Now.AddMinutes(10000);
context.Response.Cookies.Add(cookie);

context.Response.ContentType = "text/plain";
context.Response.AddHeader("P3P", "CP=CAO PSA OUR");
context.Response.Write("");
}

public bool IsReusable
{
get
{
return false;
}
}
}
}

最后是 GetCookie.aspx 页面,它同样是www.test2.com下的页面,没有前台代码,只有后台代码:
复制代码代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Admin10000.Web
{
public partial class GetCookie : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Cookies["name"] != null)
{
Response.Write(Request.Cookies["name"].Value);
}
}
}
}

好了,现在访问测试,通过访问 http://www.test1.com/Default.aspx 之后,这时会通过iframe载入调用SSO.ashx这个页面,执行后台代码创建cookie,然后访问 http://www.test2.com/GetCookie.aspx 得到了相应的cookie。说明在www.test1.com下创建的cookie在www.test2.com下是可以访问到的。
要注意的地方:
admin10000.com 提示 SSO.ashx 的后台代码中有一句:context.Response.AddHeader("P3P", "CP=CAO PSA OUR"); 是用来设置P3P响应头。是因为IE浏览器支持的P3P导致iframe跨站点时cookie被阻止,无法创建cookie。(FireFox目前还不支持P3P安全特性,FireFox自然也不存在此问题。不需要添加P3P响应头。)
通过iframe的src属性将test1.com域下的cookie值作为get参数重定向到test2.com域下SSO.ashx页面上,SSO.ashx获取test1.com域中所传过来的cookie值,并将所获取到值写入cookie中,这样就简单的实现了cookie跨域的访问。
另外Default.aspx页面也可改为JS调用形式:
复制代码代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Admin10000.Web.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<script type="text/javascript" src="http://www.test2.com/SSO.ashx"></script>
</div>
</form>
</body>
</html>

个人认为cookie保存在客户端的,所以想跨域名,应该只需要把两个域名下设置接收cookie的变量一致就行了,当然,排除你在cookie中写入了IP限置的方法!

你把两个域名存在一起吗,不就好了吗


如何实现 与windows 的sso
1、windows域登录与SSO服务器整合 1.1 分析:windows域登录过程采用Kerberose v5协议进行登录,过程非常复杂,并且登录中身份认证以及域的权 限整合在一起。要剥离身份认证和权限赋权非常困难。要整合现有的SSO服务器,可以考虑,采用windows域控制器 统一管理用户,SSO服务器采用该域控制器的Active Directory...

襄汾县18510199521: 如何获取顶级域cookie -
纳旺乙酰: 个人认为cookie保存在客户端的,所以想跨域名,应该只需要把两个域名下设置接收cookie的变量一致就行了,当然,排除你在cookie中写入了IP限置的方法!

襄汾县18510199521: 不同域名的cookie怎么共享 -
纳旺乙酰: 不同域名的cookie是不能共享的,可以通过服务端存贮信息

襄汾县18510199521: javascript 在一个一级域名和二级域名网站之间获取cookie的问题. -
纳旺乙酰: 跨域共享cookie的方法:设置cookie.setDomain(".jszx.com"); A机所在的域:home.langchao.com,A有应用cas B机所在的域:jszx.com,B有应用webapp_b1)在cas下面设置cookie的时候,增加cookie.setDomain(".jszx.com");,这样在...

襄汾县18510199521: Java cookie的跨域问题?怎么在前端域名下添加cookie -
纳旺乙酰: 假设你的前端站点域名为www.xxx.com 后端数据接口域名为 api.xxx.com 通常有以下2种解决方案1. cookie写入的时候写入xxx.com域下不要写到www.xxx.com或者api.xxx.com下2. 在www.xxx.com中配置反向代理,将www.xxx.com/api代理到api.xxx.com,然后cookie就正常的写到www.xxx.com域下就可以了

襄汾县18510199521: php 如何实现cookie跨域访问 -
纳旺乙酰: php 可以实现cookie 登陆的,前提是主域名和2级域名的关系才可以,如果2个都是主域名就需要用js的方式去弄, js操作的主要步骤:A域名登陆的时候ajax 指定url到B域名,然后执行B域名的文件,这个文件里面写保存B网站的cookie.过期时间需要同步

襄汾县18510199521: 前端如何跨域拿到cookie -
纳旺乙酰: 前后端分离,最应该用token来交互,而不是用cookie.当然是可以取得cookie的.所有的cookie 都在头里面,有个Set-Cookie的字段,读取这个头就可以了.Token是令牌.HTTP是无状态的,Cookie是记录HTTP状态的一种手段.浏览器会通过Set-Cookie字段获取Cookie.而Token是通过oauth认证后得到的令牌.

襄汾县18510199521: 高分,Cookie如何跨域访问 -
纳旺乙酰: 看着这100分 有点眼馋 jsf不熟 你可以这样 如果这几个域都是固定的 登陆的时候 你同时设置几个cookie咯 呵呵 这个是最笨的方法了

襄汾县18510199521: 多个域名共享一个 cookie怎么解决? - 技术 -
纳旺乙酰: 通常cookie不可能跨域共享,这是浏览器本身的限制,也是一种安全性的限制.但是之前也遇到过只有一种解决方案,那就是将cookies的方式用数据库保存,因为cookies特性就是不能跨域名.

襄汾县18510199521: JS 实现Cookie跨域(二级域名) -
纳旺乙酰: 设置cookie的时候,有个参数用domain domain,不要加www 如:domain=baidu.com

襄汾县18510199521: 什么是cookie跨域问题 -
纳旺乙酰: 在Cookie规范上说,一个cookie只能用于一个域名,不能够发给其它的域名.因此,如果在浏览器中对一个域名设置了一个cookie,这个cookie对于其它的域名将无效.如果你想让你的用户从你的站点中的其中一个进行登录,同时也可以在其它域名上进行登录,这可真是一个大难题.这就是跨域问题.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网