zoukankan      html  css  js  c++  java
  • cookie 跨域的问题

    今天研究一天发现cookie无法设置除当前域名或者其父域名之外的其他domain.

    这个是浏览器出于对cookie的保护造成的,也就是cookie无法跨域设置。

    对于子域名也有如下规则,当前域名只能设置当前域名以及他的父域名,不能设置子域名

    如在www.wo.cao.baidu.com  域名下只能设置 cao.baidu.com,baidu.com

    不能设置 da.jia.wo.cao.baidu.com的cookie。

    一篇文章还不错,摘录下来

    当我们给网站设置cookie时,大家有没有发现在网站的其他域名下也接收到了这些cookie。这些没用的cookie看似不占多少流量,但如果对一个日PV千万的站点来说,那浪费的资源就不是一点点了。因此在设置cookie时,对它的作用域一定要设置准确了。

    我们都知道在PHP中用setcookie 来设置网站的cookie,该函数的用法如下:

    bool setcookie ( string $name [, string $value [, int$expire = 0 [, string$path [, string $domain [, bool$secure = false [, bool$httponly = false ]]]]]] )
     

    今天我们就来探讨一下它的第五个参数$domain,因为它决定了cookie的作用域。

    现在有如下3个域名,一个顶级域名、一个二级域名和一个三级域名:

    ① zydya.com
    ②blog.zyday.com
    ③one.blog.zyday.com

    • 首先在①zyday.com域名下设置cookie,做四次测试,分别设置domain参数为空、'zyday.com'、'blog.zyday.com'与'one.blog.zyday.com'。
      √表示该域名下能取到cookie,×表示不能取到cookie
    domain参数 zydya.com blog.zyday.com one.blog.zyday.com
    setcookie('name',1,time()+1)  √  √  √
    setcookie('name',1,time()+1,'/','zyday.com')    √  √
    setcookie('name',1,time()
    +1,'/','blog.zyday.com')
     ×  ×  ×
    setcookie('name',1,time()
    +1,'/','one.blog.zyday.com')
    × × ×

    当domain设置为空时,domain默认为当前域名,并且该域名下的子域名都可以接收到cookie。
    但是domain参数设置其子域名时,所有域名就接收不到了,包括那个子域名。

    • 然后在②blog.zyday.com域名下设置cookie,测试条件同上
    domain参数 zydya.com blog.zyday.com one.blog.zyday.com
    setcookie('name',1,time()
    +1)
    ×
    setcookie('name',1,time()+1,'/','zyday.com')
    setcookie('name',1,time()+1,'/','blog.zyday.com') ×
    setcookie('name',1,time()+1,'/',one.blog.zyday.com') × × ×

    看第二行,domain参数是zyday.com,是blog.zyday.com的父域名,那么zyday.com下所有子域名(包括zyday.com、blog.zyday.com、one.blog.zyday.com)都能接收到cookie。
    当domain为自身域名时,那么其父域名受影响,其本身与其子域名可以接收到cookie。
    而设置其子域名或其他域名时,所有域名都接收不到cookie了。

    • 最后在③one.blog.zyday.com域名下设置cookie
    domain参数 zydya.com blog.zyday.com one.blog.zyday.com
    setcookie('name',1,time()
    +1)
    × ×
    setcookie('name',1,time()+1,'/','zyday.com')
    setcookie('name',1,time()+1,'/','blog.zyday.com') ×
    setcookie('name',1,time()+1,'/',one.blog.zyday.com') × ×

    第三个测试得出的结论在上面已经总结了。再看一遍,这里就不多解释了。

    domain的设置,有两点要注意:

    1.在setcookie中省略domain参数,那么domain默认为当前域名。

    2.domain参数可以设置父域名以及自身,但不能设置其它域名,包括子域名,否则cookie不起作用。

    那么cookie的作用域:

    cookie的作用域是domain本身以及domain下的所有子域名。

    本文来自 小菜鸟czh 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/czhphp/article/details/65628977?utm_source=copy

  • 相关阅读:
    086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
    085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用
    jQuery UI组件库Kendo UI使用技巧小分享
    Kendo UI ListView模板功能,让Web开发更轻松
    UI组件套包DevExpress ASP.NET Core v20.2新版亮点:全新的查询生成器
    Devexpress WinForms最新版开发.NET环境配置Visual Studo和SQL Server对应版本
    全新的桌面应用数据可视化呈现方式,Sankey Diagram控件你了解多少?
    java中的递归方法
    连接数据库查询 将查询结果写入exce文件中
    java连接mysql数据查询数据
  • 原文地址:https://www.cnblogs.com/jackmary/p/9747100.html
Copyright © 2011-2022 走看看