java 之 HTTP协议

HTTP简介

WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。
HTTP是HyperText Transfer Protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。
HTTP协议的版本
    HTTP/1.0、HTTP/1.1
HTTP协议是学习JavaWEB开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点。

HTTP1.0的基本运行方式

java 之 HTTP协议_第1张图片

浏览器访问多图网页

在一个HTML页面中如果包含标记的话,当浏览器解析到这些标记时,还会向服务器请求访问标记中指定的文件,即再次建立连接并发出HTTP请求。
如果HTML页面中有一个超级链接:
    itcast,当点击这个链接时,也会触发浏览器与Web服务器开始一次新的HTTP通信。

HTTP1.1与HTTP1.0的比较

java 之 HTTP协议_第2张图片

HTTP请求消息

java 之 HTTP协议_第3张图片

HTTP响应消息

java 之 HTTP协议_第4张图片

HTTP消息头(请求和响应共性)

使用消息头,可以实现HTTP客户机与服务器之间的条件请求和应答,消息头相当于服务器和浏览器之间的一些暗号指令。
每个消息头包含一个头字段名称,然后依次是冒号、空格、值、回车和换行符
    如: Accept-Encoding: gzip, deflate
消息头字段名是不区分大小写的,但习惯上讲每个单词的第一个字母大写。
整个消息头部分中的各行消息头可按任何顺序排列。
消息头又可分为通用信息头、请求头、响应头、实体头等四类
许多请求头字段都允许客户端在值部分指定多个可接受的选项,多个选项之间以逗号分隔。
有些头字段可以出现多次,例如,响应消息中可以包含有多个”Warning”头字段。

HTTP请求的细节——请求行

![这里写图片描述](https://img-blog.csdn.net/20161119155257764)

HTTP响应的细节——状态行

java 之 HTTP协议_第5张图片

HTTP响应的细节——常用状态码

200(正常)
表示一切正常,返回的是正常请求结果
302/307(临时重定向)
指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。
304(未修改)
表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器请求。
404(找不到)
服务器上不存在客户机所请求的资源。
500(服务器内部错误)
服务器端的程序发生错误

HTTP请求的细节——请求头1

    请求头字段用于客户端在请求消息中向服务器传递附加信息,主要包括客户端可以接受的数据类型(MIME类型)、压缩方法、语言以及发出请求的超链接所属页面的URL地址等信息。
常用请求头:
    Accept:浏览器可接受的MIME类型 
    Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
    Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip 
    Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 可以在浏览器中进行设置。
    Host:初始URL中的主机和端口 
    Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面 
    Content-Type:内容类型

HTTP请求的细节——请求头2

If-Modified-Since: Wed, 02 Feb 2011 12:04:56 GMT利用这个头与服务器的文件进行比对,如果一致,则从缓存中直接读取文件。
User-Agent:浏览器类型.
Content-Length:表示请求消息正文的长度 
Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接 
Cookie:这是最重要的请求头信息之一 
Date:Date: Mon, 22 Aug 2011 01:55:39 GMT请求时间GMT

HTTP响应细节——常用响应头1

响应头字段用于向客户端传递附加信息
常用响应头
    Location: http://www.it315.org/index.jsp指示新的资源的位置
    Server:apache tomcat指示服务器的类型
    Content-Encoding: gzip服务器发送的数据采用的编码类型
    Content-Length: 80 告诉浏览器正文的长度
    Content-Language: zh-cn服务发送的文本的语言
    Content-Type: text/html; charset=GB2312服务器发送的内容的MIME类型
    Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT文件的最后修改时间
    Refresh: 1;url=http://www.it315.org指示客户端刷新频率。单位是秒

HTTP响应细节——常用响应头2

Content-Disposition: attachment; filename=aaa.zip指示客户端下载文件
Set-Cookie:SS=Q0=5Lb_nQ; path=/search服务器端发送的Cookie
Expires: -1
Cache-Control: no-cache (1.1)  
Pragma: no-cache   (1.0)
Connection: close/Keep-Alive   
Date: Tue, 11 Jul 2000 18:23:51 GMT

你可能感兴趣的:(java,深度技术研究,java,http协议,web服务器)