失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Cookie的设置域名domain与跨域的问题

Cookie的设置域名domain与跨域的问题

时间:2022-07-26 09:08:23

相关推荐

Cookie的设置域名domain与跨域的问题

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

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

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

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

不能设置 da.jia.wo.的cookie。

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

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

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

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

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

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

③one.

首先在①域名下设置cookie,做四次测试,分别设置domain参数为空、''、''与'one.'。

√表示该域名下能取到cookie,×表示不能取到cookie

当domain设置为空时,domain默认为当前域名,并且该域名下的子域名都可以接收到cookie。

但是domain参数设置其子域名时,所有域名就接收不到了,包括那个子域名。

然后在②域名下设置cookie,测试条件同上

看第二行,domain参数是,是的父域名,那么下所有子域名(包括、、one.)都能接收到cookie。

当domain为自身域名时,那么其父域名受影响,其本身与其子域名可以接收到cookie。

而设置其子域名或其他域名时,所有域名都接收不到cookie了。

最后在③one.域名下设置cookie

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

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

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

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

那么cookie的作用域:

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

如果觉得《Cookie的设置域名domain与跨域的问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。