五.javaweb之Http协议

1
HTTP协议
  1. HTTP协议简介

1. HTTP协议

  • HTTP hypertext transport protocol ),即超文本传输协议。这个协议 详细规定了浏览器和万维网服务器之间互相通信的规则。
  • 客户端与服务端通信时传输的内容我们称之为报文。
  • HTTP 就是一个通信规则,这个规则规定了客户端发送给服务器的报文格式,也规定了服务器发送给客户端的报文格式。实际我们要学习的就是这两种报文。客户端发送给服务器的称为 请求报文 ,服务器发送给客户端的称为 响应报文
协议:约定多方规则;
租房协议:
               写信:           
信封:
写信:
        邮编:胡錦涛
                      收件人地址: 100000
                             发件人地址:xxx
        把信的内容包在信封里
回信:
        邮编: 100000
                      收件人地址:XXX  
                             发件人地址:胡錦涛
        把信的内容包在信封里
打破规定,沟通就有问题。
实际互联网。
        客户端 - à 服务端进行通信
        用户 ------ à 访问京东(就是一个数据传输的过程)
        数据传输需要按照一种协议去传输。
        用户给服务器写信。服务器给用户回信。有格式。协议。 HTTP 协议规定通信规则。
规定互联网之间如何传输数据。
        信:报文。
        写信:用户给服务器写信,用户给服务器发请求。   把发的请求所有数据,请求报文
        回信:服务器回信给用户,回给浏览器。              把服务器响应浏览器的所有数据,响应报文
HTTP 协议就是规定报文的格式。
               报文:电报。格式。
              
只需要看浏览器发给服务器的内容的详细信息就知道报文的格式了。
  1. HttpWatch

2.1 安装

  • 由于 IE8 以下的 IE 浏览器没有提供监听 HTTP 的功能,所以如果要使用 IE8 以下的浏览器查看 HTTP 请求的内容需要安装一个工具 HttpWatch
  • Firefox chrome 都有内置的开发者工具,可以直接查看 Http 请求。
  • HttpWatch 的使用非常简单,直接安装,然后一直下一步,直到安装完成。

2.2 使用

  • 安装完成后,打开 IE 浏览器,工具下拉列表可以看到 HttpWatch Professional 选项
  • 打开后点击Record按钮开始监听Http请求。
  1. 报文

3.1 报文格式

报文:
          请求报文:浏览器发给服务器
          响应报文:服务器发回给浏览器
报文的格式:
                    报文首部:封装了报文的属性以及一些其他内容
                    空行
                    报文主体:封装了应该被发送的数据
谷歌将报文都已经格式化了。所以不能观察到原生的报文的格式
我们可以写一段程序来获取报文
GET /HelloWord/index.html HTTP/1.1
Host: 192.168.10.165:8080
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8

3.2 请求报文

3.1.1 报文格式
请求首行;
请求头信息;
空行;
请求体;
get post
哪些操作是发请求?
         1 )、输入地址直接按回车   2 )、点击超链接    3 )、表单提交  
         4 )、 script src=”” ,引入外部文件          5 img src=” 路径 ”, 引入图片
         6 )、引入外部 css 。。。
请求: GET 请求、 POST 请求
哪些请求是 GET 请求:除了表单的 method=post 外,剩下都是 get 请求
POST 请求:只有表单提交的时候 method=post, 提交表单就是发 post 请求
3.1.2 GET请求
GET /Hello/index.jsp HTTP/1.1
Accept: */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Host: localhost:8080
Connection: Keep-Alive
Cookie: JSESSIONID=C55836CDA892D9124C03CF8FE8311B15
 
    • GET /Hello/index.jsp HTTP/1.1 GET 请求,请求服务器路径为 Hello/index.jsp ,协议为 1.1
    • Host:localhost :请求的主机名为 localhost
    • User-Agent: Mozilla/4.0 (compatible; MSIE 8.0… :与浏览器和 OS 相关的信息。有些网站会显示用户的系统版本和浏览器版本信息,这都是通过获取 User-Agent 头信息而来的;
    • Accept: */* :告诉服务器,当前客户端可以接收的文档类型, */* ,就表示什么都可以接收;
    • Accept-Language: zh-CN :当前客户端支持的语言,可以在浏览器的工具 à 选项中找到语言相关信息;
    • Accept-Encoding: gzip, deflate :支持的压缩格式。数据在网络上传递时,可能服务器会把数据压缩后再发送;
    • Connection: keep-alive :客户端支持的链接方式,保持一段时间链接,默认为 3000ms
    • Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98 :因为不是第一次访问这个地址,所以会在请求中把上一次服务器响应中发送过来的 Cookie 在请求中一并发送去过。

3.1.3 POST请求

  • POST 请求要求将 form 标签的 method 的属性设置为 post
POST /Hello/target.html HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Referer: http://localhost:8080/Hello/
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 14
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=774DA38C1B78AE288610D77621590345
username=admin
  • POST 请求是可以有体的,而 GET 请求不能有请求体。
  • Referer: http://localhost:8080/hello/index.jsp:请求来自哪个页面,例如你在百度上点击链接到了这里,那么Referer:http://www.baidu.com;如果你是在浏览器的地址栏中直接输入的地址,那么就没有Referer这个请求头了;
  • Content-Type: application/x-www-form-urlencoded :表单的数据类型,说明会使用 url 格式编码数据; url 编码的数据都是以“ % ”为前缀,后面跟随两位的 16 进制,例如“传智”这两个字使用 UTF-8 url 编码用为“ %E4%BC%A0%E6%99%BA ”;
  • Content-Length:13 :请求体的长度,这里表示 13 个字节。
  • keyword=hello :请求体内容! hello 是在表单中输入的数据, keyword 是表单字段的名字。

3.3 响应报文

3.3.1 报文格式
响应首行;
响应头信息;
空行;
响应体;
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=UTF-8
Content-Length: 274
Date: Tue, 07 Apr 2015 10:08:26 GMT
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Hello</h1>
</body>
</html>
  • HTTP/1.1 200 OK:响应协议为HTTP1.1,状态码为200,表示请求成功;
  • Server: Apache-Coyote/1.1:服务器的版本信息;·
  • Content-Type: text/html;charset=UTF-8:响应体使用的编码为UTF-8
  • Content-Length: 274 :响应体为 274 字节;
  • Date: Tue, 07 Apr 2015 10:08:26 GMT :响应的时间,这可能会有 8 小时的时区差;

3.3.2 响应码

响应码对浏览器来说很重要,它告诉浏览器响应的结果;
  • 200 :请求成功,浏览器会把响应体内容(通常是 html )显示在浏览器中;
  • 404 :请求的资源没有找到,说明客户端错误的请求了不存在的资源;
  • 500 :请求资源找到了,但服务器内部出现了错误;
  • 302 :重定向,当响应码为 302 时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头 Location ,它指定了新请求的 URL 地址;

3.3.3 MIME类型

    • HTTP 内容类型:当前响应体的数据类型。
①需要指出的是在浏览器和服务器之间传输的数据类型并非都是文本类型,还包括图片、视频、音频等多媒体类型。这些多媒体类型是使用 MIME 类型定义的。
MIME 的英文全称是 "Multipurpose Internet Mail Extensions" 多功能 Internet 邮件扩充服务。 MIME 类型的格式是“大类型 / 小类型”,并与某一种文件的扩展名相对应。
③常见的 MIME 类型
文件
MIME 类型
超文本标记语言文本
.html,.html text/html
普通文本
.txt text/plain
RTF 文本
.rtf application/rtf
GIF 图形
.gif image/gif
JPEG 图形
.jpeg,.jpg image/jpeg
au 声音文件
.au audio/basic
MIDI 音乐文件
mid,.midi audio/midi,audio/x-midi
RealAudio 音乐文件
.ra, .ram audio/x-pn-realaudio
MPEG 文件
.mpg,.mpeg video/mpeg
AVI 文件
.avi video/x-msvideo
GZIP 文件
.gz application/x-gzip
TAR 文件
.tar application/x-tar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值