php中的header主要用于向客户端发送原始的http报头,常用的有用来通知浏览器页面不存在,延迟转向、表示内容类型、声明下载文件、对当前文档禁用缓存、显示一个需要验证的登陆对话框等等.
headerphp函数使用详解
标头(header)是服务器以HTTP协义传HTML材料到浏览器前所送出的字串,在标头与HTML文件之间需要空一行分隔。在PHP中送回HTML材料前,需先传完所有的标头。
header()函数向客户端发送原始的HTTP报头。
认识到一点很重要,即有必要在任何实践的输出被发送之前调用header()函数(在PHP4以及更高的版别中,您可以运用输出缓存来解决此问题)
Accept
告知WEB服务器自己承受什么介质类型,*/*标明任何类型,type/*标明该类型下的所有子类型,type/sub-type。
Accept-Charset
浏览器声明自己接纳的字符集
Accept-Encoding:浏览器声明自己接纳的编码方法,通常指定紧缩方法,是否支撑紧缩,支撑什么紧缩方法(gzip,deflate)
Accept-Language::浏览器声明自己接纳的言言语语跟字符集的区别:中文是言语,中文有多种字符集,比方big5,gb2312,gbk等等。
Accept-Ranges
WEB服务器标明自己是否承受获取其某个实体的一部分(比方文件的一部分)的恳求。
bytes:标明承受
none:标明不承受。
Age
当署理服务器用自己缓存的实体去呼应恳求时,用该头部标明该实体从发生到现在通过多长时刻了。
Authorization
当客户端接纳到来自WEB服务器的WWW-Authenticate呼应时,用该头部来回应自己的身份验证信息给WEB服务器。
Cache-Control
恳求:no-cache(不要缓存的实体,要求现在从WEB服务器去取)
max-age:(只承受Age值小于max-age值,而且没有过期的目标)
max-stale:(可以承受曩昔的目标,可是过期时刻有必要小于max-stale值)
min-fresh:(承受其新鲜生命期大于其当时Age跟min-fresh值之和的缓存目标)
呼应:public(可以用Cached内容回应任何用户)
private(只能用缓存内容回应从前恳求该内容的那个用户)
no-cache(可以缓存,可是只有在跟WEB服务器验证了其有用后,才干回来给客户端)
max-age:(本呼应包括的目标的过期时刻)
ALL:no-store(不允许缓存)
Connection
恳求:close(告知WEB服务器或许署理服务器,在完结本次恳求的呼应后,断开衔接,不要等候本次衔接的后续恳求了)。
keepalive(告知WEB服务器或许署理服务器,在完结本次恳求的呼应后,坚持衔接,等候本次衔接的后续恳求)。
呼应:close(衔接现已封闭)。
keepalive(衔接坚持着,在等候本次衔接的后续恳求)。
Keep-Alive:假设浏览器恳求坚持衔接,则该头部标明期望WEB服务器坚持衔接多长时刻(秒)。
例如:Keep-Alive:300
Content-Encoding
WEB服务器标明自己运用了什么紧缩方法(gzip,deflate)紧缩呼应中的目标。
例如:Content-Encoding:gzip
Content-Language:WEB服务器告知浏览器自己呼应的目标的言语。
Content-Length:WEB服务器告知浏览器自己呼应的目标的长度。
例如:Content-Length:26012
Content-Range:WEB服务器标明该呼应包括的部分目标为整个目标的哪个部分。
例如:Content-Range:bytes21010-47021/47022
Content-Type:WEB服务器告知浏览器自己呼应的目标的类型。
例如:Content-Type:application/xml
ETag
就是一个目标(比方URL)的标志值,就一个目标而言,比方一个html文件,假设被修正了,其Etag也会别修正,所以,ETag的效果跟Last-Modified的效果差不多,首要供WEB服务器判别一个目标是否改动了。比方前一次恳求某个html文件时,取得了其ETag,当这次又恳求这个文件时,浏览器就会把从前取得的ETag值发送给WEB服务器,然后WEB服务器会把这个ETag跟该文件的当时ETag进行对比,然后就知道这个文件有没有改动了。
Expired
WEB服务器标明该实体将在什么时候过期,对于过期了的目标,只有在跟WEB服务器验证了其有用性后,才干用来呼应客户恳求。是HTTP/1.0的头部。例如:
Expires:Sat,23May200910:02:12GMT
Host
客户端指定自己想访问的WEB服务器的域名/IP地址和端口号。
例如:Host:rss.sina.com.cn
If-Match
假设目标的ETag没有改动,其实也就意味著目标没有改动,才履行恳求的动作。
If-None-Match:假设目标的ETag改动了,其实也就意味著目标也改动了,才履行恳求的动作。
If-Modified-Since
假设恳求的目标在该头部指定的时刻之后修正了,才履行恳求的动作(比方回来目标),不然回来代码304,告知浏览器该目标没有修正,例如:
If-Modified-Since:Thu,10Apr200809:14:42GMT
If-Unmodified-Since假设恳求的目标在该头部指定的时刻之后没修正过,才履行恳求的动作(比方回来目标)。
If-Range
浏览器告知WEB服务器,假设我恳求的目标没有改动,就把我短少的部分给我,假设目标改动了,就把整个目标给我。浏览器通过发送恳求目标的ETag或许自己所知道的最终修正时刻给WEB服务器,让其判别目标是否改动了。总是跟Range头部一同运用。
Last-Modified
WEB服务器认为目标的最终修正时刻,比方文件的最终修正时刻,动态页面的最终发生时刻等等,例如:
Last-Modified:Tue,06May200802:42:43GMT
Location
WEB服务器告知浏览器,试图访问的目标现已被移到其他位置了,到该头部指定的位置去取。
Pramga
首要运用Pramga:no-cache,相当于Cache-Control:no-cache。例如:
Pragma:no-cache
Proxy-Authenticate
署理服务器呼应浏览器,要求其供给署理身份验证信息。
Proxy-Authorization:浏览器呼应署理服务器的身份验证恳求,供给自己的身份信息。
Range
浏览器(比方Flashget多线程下载时)告知WEB服务器自己想取目标的哪部分。
例如:Range:bytes=1173546-
Referer
浏览器向WEB服务器标明自己是从哪个网页/URL取得/点击当时恳求中的网址/URL。
例如:Referer:https://www.wenjiangs.com/
Server
WEB服务器标明自己是什么软件及版别等信息。
例如:Server:Apache/2.0.61(Unix)
User-Agent
浏览器标明自己的身份(是哪种浏览器),例如:
User-Agent:Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.8.1.14)Gecko/20080404Firefox/2.0.0.14
Transfer-Encoding
WEB服务器标明自己对本呼应音讯体(不是音讯体里边的目标)作了怎样的编码,比方是否分块(chunked)。
例如:Transfer-Encoding:chunked
Vary
WEB服务器用该头部的内容告知Cache服务器,在什么条件下才干用本呼应所回来的目标呼应后续的恳求。假设源WEB服务器在接到第一个恳求音讯时,其呼应音讯的头部为:
Content-Encoding:gzip;Vary:Content-Encoding那么Cache服务器会剖析后续恳求音讯的头部,查看其Accept-Encoding,是否跟从前呼应的Vary头部值一致,即是否运用相同的内容编码方法,这样就可以避免Cache服务器用自己Cache里边紧缩后的实体呼应给不具备解压能力的浏览器。
例如:Vary:Accept-Encoding
Via
列出从客户端到OCS或许相反方向的呼应通过了哪些署理服务器,他们用什么协议(和版别)发送的恳求。当客户端恳求到达第一个署理服务器时,该服务器会在自己宣布的恳求里边添加Via头部,并填上自己的相关信息,当下一个署理服务器收到第一个署理服务器的恳求时,会在自己宣布的恳求里边复制前一个署理服务器的恳求的Via头部,并把自己的相关信息加到后边,以此类推,当OCS收到最终一个署理服务器的恳求时,查看Via头部,就知道该恳求所通过的路由,例如:
Via:1.0236-81.D07071953.sina.com.cn:80(squid/2.6.STABLE13)。