本日我们来讲讲相应工具TFResponse,它也是系统级别的工具,它卖力视图的输出。也便是说用户在浏览器上看到的一些网页内容都是通过TFResponse相应工具输出出来的。输出数据包括很多属性,如:相应数据类型、相应数据大小、做事器信息、做事器指令等等。
相应工具TFResponse首先我们先建立TFResponse这个相应工具,程序文件保存在System/TFResponse.inc.php。
相应头
相应头和要求头相似的、相对的。要求头是浏览器组织起来的数据,浏览器会将要求头发送给做事器。而相应头是做事器组织起来的数据,做事器会根据浏览器送过来的要求头找到对应的要求资源,并把资源数据的信息组织成相应头送回给浏览器。

下面给出一个完全的相应头信息示例:
200OKHTTP/1.1Connection:keep-aliveContent-Type:text/html;charset=UTF-8Date:Sun,08Nov202010:50:09GMTServer:nginxTransfer-Encoding:chunkedX-Powered-By:PHP/7.4.6
相应状态
在相应头的第一行会有一个三位数字和一个短语,这个便是做事器响运用户要求的状态信息。三位数字表示相应状态码,而短语则是相应状态的笔墨信息。举例来说:相应状态信息“200 OK”就表示用户要求的资源找到了且正常下载下来了,后面的短语也很直不雅观地反应了这个结果。
相应状态对照表
相应状态有很多,下面福哥给出一个比较全面的状态信息对照给大家:
100,Continue101,Switching Protocols102,Processing200,OK201,Created202,Accepted203,Non-Authoritative Information204,No Content205,Reset Content206,Partial Content207,Multi-Status300,Multiple Choices301,Moved Permanently302,Move temporarily303,See Other304,Not Modified305,Use Proxy306,Switch Proxy307,Temporary Redirect400,Bad Request401,Unauthorized402,Payment Required403,Forbidden404,Not Found405,Method Not Allowed406,Not Acceptable407,Proxy Authentication Required408,Request Timeout409,Conflict410,Gone411,Length Required412,Precondition Failed413,Request Entity Too Large414,Request-URI Too Long415,Unsupported Media Type416,Requested Range Not Satisfiable417,Expectation Failed421,Too Many Connections422,Unprocessable Entity423,Locked424,Failed Dependency425,Unordered Collection426,Upgrade Required449,Retry With451,Unavailable For Legal Reasons500,Internal Server Error501,Not Implemented502,Bad Gateway503,Service Unavailable504,Gateway Timeout505,HTTP Version Not Supported506,Variant Also Negotiates507,Insufficient Storage509,Bandwidth Limit Exceeded510,Not Extended600,Unparseable Response Headers
设置相应状态
相应状态必须在相应头第一行,在PHP措辞里可以通过内建的header函数设置相应头信息,通过header设置相应状态信息的方法如下:
header("HTTP/1.1200OK");
数据类型
在相应头里我们须要见告浏览器用户要求的资源是什么数据类型。数据类型很好理解,普通地说便是:用户打开的是一个网页?一张图片?一个MP3?还是一段视频?这些格式便是我们说的数据类型了。举例来说:JPG格式的图片对应的数据类型便是“image/jpeg”,MP3音乐对应的数据类型便是“audio/mpeg”,普通网页便是“text/html”。
MIME类型
数据类型通过一个标准格式描述,这种格式称之为MIME类型,专门用于HTTP协议的相应头的数据类型。下面福哥整理了一些常用的数据类型和文件扩展名的对照给大家:
html,text/htmlhtm,text/htmltxt,text/plainjson,application/jsonjs,text/javascriptcss,text/cssjpg,image/jpegjpeg,image/jpegpjpeg,image/jpegpng,image/pnggif,image/gif
大家可能已经创造了,很多不同的扩展名对应的MIME类型是一样的,这解释了这些有着一样MIME类型的文件它们的构造是一样的,可以通过一样的工具打开或编辑或运行。
数据长度相应头里须要见告浏览器用户要求的资源有多大,这样浏览器才知道须要下载多少数据才能下载完成。这个数据长度须要显性地奉告浏览器,且须要在相应体里给出这样多的数据给浏览器才行。
除了显性奉告浏览器数据长度外,还有一种办法让浏览器知道如何下载资源内容,便是利用chunked编码办法。
chunked
所谓chunked编码办法便是将资源内容一块一块地推送给浏览器,每一块数据推送之前都会奉告这一块数据的长度,而每一块数据不会太长。
这一块一块的数据的长度通过一个16进制数字表示,在数据长度后面用一个CRLF换行符表示块长度结束,在CRLF后面便是块数据了,块数据的长度必须和前面的数字声明的一样。
下面举例:
15(十进制21)福哥,你真棒!
(这一段笔墨长度也是21)2a(十进制42)我要和随着福哥好好学习编程~~
本日福哥给大家讲解了关于web要求的相应头的干系知识,童鞋们知道了相应头的相应状态是怎么回事了,童鞋们也理解了关于MIME类型的浸染,童鞋们还明白了两种相应数据长度的不同,知道了chunked的事理。
下一课福哥要开始带着大家实现相应工具TFResponse的功能了,本日课上的知识童鞋们下去一定要好好研读哦~
https://m.tongfu.net/home/35/blog/512871.html