上一篇博文中已对http做了简单的介绍(参考hhtp下午茶)
客户端先向服务器发送请求告诉服务器自己需要的资源,然后客户端响应,并在响应中包含客户端的数据(物理介质复制或者程序自动生成)一些有用的请求头部如下:
名称 | 释义 | 举例 |
---|---|---|
Host | 服务器域名 | host:www.baidu.com |
Accept-Language | 可接受的语言 | Accept-Language: en-US,en;q=0.8 |
User-Agent | 标识客户端的字符串 | Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36 |
Connection | 客户端连接的类型 | 例:Connection: keep-alive |
Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。
响应的组成(有关返回的资源的信息):
头部名 | 描述 | 举例 |
---|---|---|
Status Code | 状态码 | 200(OK) 404(not found) 302(Found重定向) 500(Internal Server Error) |
Content-Encoding | 数据的编码类型 | gzip |
Server | 服务器的名称 | BWS/1.1 |
Location | 通知客户端新的资源位置 | https://www.baidu.com/ |
Content-Type | 响应数据的类型 | text/html;charset=utf-8 |
若有Python基础,可以参考实验楼的用Python搭建WEB服务器的课程
本人github源码链接https://github.com/ruanjianlin/web_server(仅供参考)