cookie跨二级域名和顶级域名

本文介绍了如何在二级域名和顶级域名下实现Cookie的跨域设置。对于二级域名,通过设置HttpCookie并指定Domain属性实现;而对于顶级域名,则可以通过在目标域名下创建一个WebHandler来处理跨域设置请求。此外还提供了使用JavaScript进行跨域调用的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 二级域名下  cookie跨域名
 Response.AddHeader("P3P", "CP=CAO PSA OUR");//ie浏览器下需写入
                HttpCookie cookie = new HttpCookie("username");
                cookie.Domain = ".baidu.com";//域名
                cookie.Expires = DateTime.Now.AddDays(14);
                cookie.Value =value.Name;
                Response.AppendCookie(cookie);

2.顶级域名的跨cookie用iframe嵌套或者用js调用接口

先写一接口 为sso.ashx 在a域名下

<%@ WebHandler Language="C#" Class="SSO" %>

using System;
using System.Web;

public class SSO : IHttpHandler {
    
    public void ProcessRequest (HttpContext context)
    {
        HttpRequest rq = context.Request;
        string username = "";
        if (!string.IsNullOrEmpty(Convert.ToString(rq.QueryString["username"])))
        {
            username = Convert.ToString(rq.QueryString["username"]);
        }
        
        HttpCookie cookie = new HttpCookie("username");
        cookie.Domain = "tt.com";
        cookie.Path = "/";
        cookie.Expires = DateTime.Now.AddMinutes(10000);
        cookie.Value = username;
        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;
        }
    }
    

}
js调用 b域名下 <script type="text/javascript" src="http://www.tt.com/SSO.ashx?username=1321"></script>


### 如何在二级域名中设置Cookie 为了使不同子域之间共享 Cookie,在创建 Cookie 时需指定 `Domain` 属性。该属性定义了哪些主机名可以访问此 Cookie。对于希望多个子域间共享的情况,应该把 Domain 设置成主域名前加上点号的形式。 当服务器响应 HTTP 请求并打算向客户端发送一个新的 cookie 或更新现有 cookie 的时候,会通过 Set-Cookie 响应头来完成操作[^1]。具体来说: - 对于想要让 a.example.com b.example.com 这两个子域能够互相读取对方所设下的 cookie,则应当将 domain 参数设定为 .example.com。 ```python import http.cookies def set_cookie(response, key, value, max_age=3600): """ Sets a cookie with the given parameters. :param response: The HTTP response object to attach the cookie header to. :type response: HttpResponse or similar :param str key: Name of the cookie. :param str value: Value stored in the cookie. :param int max_age: Maximum age before the cookie expires (in seconds). """ cookie = http.cookies.SimpleCookie() cookie[key] = value cookie[key][&#39;domain&#39;] = &#39;.example.com&#39; # Note leading dot for cross-subdomain support cookie[key][&#39;max-age&#39;] = max_age cookie[key][&#39;path&#39;] = &#39;/&#39; response.headers.add(&#39;Set-Cookie&#39;, cookie.output(header=&#39;&#39;)) ``` 值得注意的是,如果尝试在一个已经存在的顶级域名上设置新的带有相同名称但是不同的路径或者其它参数的 cookie ,那么新旧两者将会共存而不是覆盖前者;因此建议确保每次修改都彻底删除之前的版本再重新建立[^3]。 另外需要注意浏览器的安全策略可能会阻止某些情况下站脚本攻击风险较高的行为,比如从 HTTPS 页面往 HTTP 下发 cookie 等情况,所以在实际开发过程中还需要考虑这些因素的影响[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值