在CSDN看到一个cookie设置domain时,如何删除的问题,

自己也只知道domain设置为顶级域名时可以被其他二级域名共享,但是如何删除还是有一点搞不清楚,所以特意测试了下cookie和domain之间的关系,下面是一些测试结果的总结

设置cookie
  非顶级域名,如二级域名或者三级域名,设置的cookie的domain只能为顶级域名或者二级域名或者三级域名本身,不能设置其他二级域名的cookie,否则cookie无法生成。

  顶级域名只能设置domain为顶级域名,不能设置为二级域名或者三级域名,否则cookie无法生成。

  如www.abc.com能设置domain为abc.com或者www.abc.com,但不能设置domain为news.abc.com,这样cookie不会生成。

+展开

-C#
HttpCookie hc = new HttpCookie("abc", "123");
hc.Domain = "news.abc.com";//////
hc.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(hc);//==========这样cookie无法生成

  abc.com只能设置domain为abc.com,不能为www.abc.com等2级域名,如果设置为其他domain二级域名,cookie无法生成。

+展开

-C#
HttpCookie hc = new HttpCookie("abc", "123");
hc.Domain = "www.abc.com";///////////
hc.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(hc);//==========这样cookie无法生成

  未指定domain时,默认的domain为用哪个域名访问就是哪个,如果为顶级域名访问,那么可以被其他2级域名共享。

读取cookie
  二级域名能读取设置了domain为顶级域名或者自身的cookie,不能读取其他二级域名domain的cookie。所以要想cookie在多个二级域名中共享,需要设置domain为顶级域名,这样就可以在所有二级域名里面或者到这个cookie的值了。

  顶级域名只能获取到domain设置为顶级域名的cookie,其他domain设置为二级域名的无法获取。

删除cookie
  1)顶级域名的cookie在顶级域名或者2级域名都可以删除,但是用非顶级域名访问的网站要删除顶级域名的cookie,需要设置获取到的cookie的domain为顶级域名,这样才能删除顶级域名的cookie,否则无法删除,默认的会删除访问的域名下对应的cookie,而不是顶级域名的。

+展开

-C#
HttpCookie hc = Request.Cookies["abc"];
if (hc != null)
{
    hc.Domain = "abc.com";/////指定为顶级域名则可以在其他二级域名中删除顶级域名的cookie,否则默认删除的是本域名下的cookie
    Response.Write("删除域名Cookie!
");
    hc.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(hc);
}

  2)删除2级域名自身生成的cookie不需要设置domain,可以直接删除。

  下面为完整的测试示例,大家自己可以测试一下,注意后面标注了/////////的代码,这些是关键,也注意修改修改代码中设置的域名,我这里为了方便,直接设置了系统hosts文件将abc.com作为测试。

+展开

-HTML
<%@ Page Language="C#" %>
<script runat="server">
    private void SetCookie(string name,string value,string domain)
    {
        HttpCookie hc = new HttpCookie(name, value);
        hc.Domain = domain;////////
        hc.Expires = DateTime.Now.AddDays(1);
        Response.Cookies.Add(hc);
    }
    private void ReadCookie(string name)
    {
        HttpCookie hc = Request.Cookies[name];
        if (hc != null) Response.Write("设置的Cookie为:" + hc.Value+"|"+hc.Domain);
        else Response.Write("Cookie值为空!");
    }
    private void DeleteCookie(string name,string domain)
    {
        HttpCookie hc = Request.Cookies[name];
        if (hc != null)
        {
          hc.Domain = domain;////////
            Response.Write("删除域名Cookie!
");
            hc.Expires = DateTime.Now.AddDays(-1);
            Response.Cookies.Add(hc);
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {

//  SetCookie("abc", "abc.com--" + DateTime.Now.ToString(), "www.abc.com");
        ReadCookie("abc");
  // DeleteCookie("abc","abc.com");
      
    }
script> 

顶级域名和二级域名共享cookie及相互删除cookie的更多相关文章

  1. 顶级域名、一级域名、二级域名与IP

    转自:https://blog.csdn.net/qq_38071429/article/details/80339091 域名:可分三级,一级域名,二级域名,三级域名.是由一串字符+域名后缀组成,我 ...

  2. MVC利用Routing实现多域名绑定一个站点、二级域名以及二级域名注册Area

    最近有这么个需求:在一个站点上绑定多个域名,每个域名进去后都要进入不同的页面.实现了这个功能以后,对于有多个域名,且有虚拟空间,但是虚拟空间却只匹配有一个站点的用户来说,可以节省很多小钱钱. 很久以前 ...

  3. nginx实现带参数目录域名重定向二级域名方法

    本文章介绍了关于nginx实现带参数目录域名重定向二级域名方法,有需要学习的朋友可参考一下. 下面的代码是基于nginx的子目录301到其他域名(URL)的规则.作用是例如访问http://www.p ...

  4. node项目发布+域名及其二级域名配置+nginx反向代理+pm2

    学习node的时候也写了一些demo.但是只是限于本地测试,从来没有发布.今天尝试发布项目. 需要准备的东西 node 项目:为了突出重点,说明主要问题.我只是拿express 写了很简单的demo. ...

  5. 超详细网站博客域名和二级域名、子域名升级HTTPS免费申请SSL证书配置nginx指南

    随着互联网的飞速发展,我们的工作生活已经离不开互联网,HTTP虽然使用极为广泛, 但是存在不小的安全缺陷, 主要是其数据的明文传送和消息完整性检测的缺乏, 而这两点恰好是网络支付,网络交易等网站应用中 ...

  6. 不同三级域名与二级域名之间互相共享Cookie

    当你在项目中遇到这样一个问题,有多个站点在多个二级级域名如果要实现各域名站点下的登录状态共享,那么最简单的方法就是共享Cookie. 首先声明几个概念,域名怎么去区分. 顶级域名:.com,.cn,. ...

  7. [置顶] 两台一级域名相同二级域名不同的服务器,怎么共享session

    比如www.hongchangfirst.com和video.hongchangfirst.com两个域名,一级域名相同,二级域名不同.每个服务器运行着不同的功能模块或者不同的子系统,他们使用不同的二 ...

  8. 关于微信网页调用js-sdk相关接口注意事项目(一级域名与二级域名互相干扰!!!)

    不知道有没有网友遇到过同一个web应用用不同的域名(一级或二级域名)在两个公众号中调用JSSDK相关接口实现功能, 这种做法本来没有问题,问题在于用二级域名(同属一级域名下的二级域名)绑定另一个web ...

  9. [hosts]在hosts中屏蔽一级域名和二级域名的写法

    一级域名,如baidu: 0.0.0.0 baidu.com 二级域名 如有道公开课 0.0.0.0 ke.youdao.com 不带协议名,不带www. 用127.0.0.1也可以.

随机推荐

  1. 30行python让图灵机器人和茉莉机器人无止尽的瞎扯蛋

    首先注册申请图灵机器人的API: http://www.tuling123.com/ 查看一下API的格式,很简单: { "key": "APIKEY", &q ...

  2. easyUI datagrid值转义

    数据库表里面字段的值想用另一种命名形式展示,如1是 是,2是 否     解决方法: 用到formatter ,{field:'params', title:'参数', width:100, sort ...

  3. websocket js 代码样例

    function StartWebSocket(wsUri) { websocket = new WebSocket(wsUri); websocket.onopen = function(evt) ...

  4. matlab学习(1)strsplit与strtok

    strsplit函数用法: <1>默认使用空格符分割,返回一个cell数组 <2>也可以指定第二个参数进行分割 <3>第二个参数也可以时包含多个分隔符的元胞数组 & ...

  5. ZOJ4067 Books(贪心)

    题目链接:传送门 题目大意: DG在书店买书,从左到右第i本书价格为ai.DG从左走到右,能买就买.如果已知DG买了m本书,问他原本最多有多少钱.若无上限,输出“Richman”,若不可能买这么多书, ...

  6. MySql查询出来的值为 boolean类型的值

    解决方案: status_flag * 1 as status_flag 乘以1之后就不会是boolean类型的值了

  7. Django项目的创建和设计模式

    1.安装django pip  install  django 2.创建项目 进入到项目文件夹的根目录下 django-admin   startproject    <project_name ...

  8. emacs安装

    1.我选用的是Ubuntu16.04. 2.Ubuntu安装好之后不能直接sudo apt-get install emacs,因为Ubuntu的源默认是emacs24,最好是用最新的emacs25, ...

  9. Java中类的构造方法

    constructor:构造函数. 在创建对象的时候,对象成员可以由构造函数方法进行初始化. new对象时,都是用构造方法进行实例化的: 例如:Test test = new Test("a ...

  10. java黑魔法-反射机制-02-通过Java反射调用其他类方法

    package com.aaron.reflect; import java.lang.reflect.Method; import java.lang.reflect.InvocationTarge ...