PHP-php header 为什么也可以种cookie?

PHP-php header 为什么也可以种cookie?

浮生未歇 发布于 2017-09-24 字数 52 浏览 1170 回复 3

php中,header也可以中cookie,请问是什么原理。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

灵芸 2017-11-01 3 楼

当你使用php 设置cookie时(setcookie),响应浏览器头信息类似以下:

Set-Cookie: PHPSESSID=xxx; path=/; domain=.xxx.com .....

浏览器根据这样的响应 将 cookie 存放在本地文件。

或者 你可以直接 header(“Set-Cookie: name=xxx[;path=xx[;domain=xxx.com[;...]]”); 这样代替 setcookie函数。。

两者是一样的。。 浏览器的一些行为取决用 服务器响应的头信息。。 比如 ,下载,跳转,404 ,cookie 等等等。。。

虐人心 2017-10-31 2 楼

这个是由 http 协议决定的
我们可以做一个简单的试验

root@kl20080094:~# curl -I "http://www.xxx.com"
HTTP/1.1 200 OK
Server: nginx/0.8.53
Date: Tue, 07 Feb 2012 02:48:21 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.3.10
Set-Cookie: PHPSESSID=hmkn089c389apqisr006vu5pr2; path=/
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Tue, 07 Feb 2012 02:48:21 GMT
Cache-Control: post-check=0, pre-check=0
P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"
Pragma: no-cache
Cache-control: private

这个就是http协议内容,必须在正文发出之前要下行到浏览器的,其中就包括了cookie控制
Set-Cookie: PHPSESSID=hmkn089c389apqisr006vu5pr2; path=/
这个就是设置cookie的
你通过php的header语句来设计,就是告诉PHP,下行协议内容里,要把cookie的设置加进去,通过php的setcookie也是一样的原理。

其实这也可以理解,为什么setcookie和header,为什么一定要在 echo 或printf命令之前使用,因为是协议头,必须在正文下行之前发到浏览器。

灵芸 2017-09-25 1 楼

这个其实很简单的,你仔细的看一下HTTP请求就明白了,浏览器Cookie的操作都是通过HTTP header来实现的,也就是说所有的Cookie都是写在HTTP请求头里在服务器端和客户端之间传输。所以你通过PHP的header直接种Cookie只不过是直接把Cookie信息写到HTTP的请求头的,然后再发送,而PHP本身的setCookie()也是对其进行一次封装罢了。所以两者是一样的。