Tomcat 和 Http 协议(11)_ HTTP 协议_请求和响应

Tomcat 和 Http 协议

HTTP 协议

一、请求协议

1、我们可以通过浏览器来监视请求和响应,获取完整的请求和响应信息。

  • Fire Fox:Ctrl+Shift+E
  • Google:内置了这功能,也无需安装。

2、无论是请求协议还是响应协议,都是由如下部分构成的:

  • 请求(或响应)首行;
  • 请求(或响应)头信息;
  • 空行;
  • 请求(或响应)正文。

3、GET 请求
在这里插入图片描述
在这里插入图片描述

  • Host:localhost:请求的主机名为 localhost;
  • User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:66.0) Gecko/20100101 Firefox/66.0:与浏览器和 OS 相关的信息。有些网站会显示用户的系统版本和浏览器版本信息,这都是通过获取 User-Agent 头信息而来的;
  • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8:告诉服务器,当前客户端可以接收的文档类型,其实这里包含了 /,就表示什么都可以接收;
  • Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2:当前客户端支持的语言,可以在浏览器的工具选项中找到语言相关信息;
  • Accept-Encoding: gzip, deflate:支持的压缩格式。数据在网络上传递时,可能服务器会把数据压缩后再发送;
  • Connection: keep-alive:客户端支持的链接方式,保持一段时间链接,默认为3000ms;
  • Cookie: JSESSIONID=985CA56F2115E8F30C556B4E921AC5B7:因为不是第一次访问这个地址,所以会在请求中把上一次服务器响应中发送过来的 Cookie 在请求中一并发送去过;这个 Cookie的名字为 JSESSIONID,然后在讲会话是讲究它!
  • Get 请求没有正文,只有头信息,请求参数是在请求的首行的 url 中传递的。请求的参数的容量是有限的,不能超过 1024kb

4、POST 请求

  • 必须依赖于表单
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • Referer: http://localhost/web_demo1/form.jsp, 请求来自哪个页面。这个值说明请求是从 form.jsp 页面发送出去的!这个东西还是比较有用的!如果这个表单的作用是下载,那么在给用户提供资源之前可以去判断请求是从哪个页面发送过来的,如果不是从本网站发送过来的,那么就可以拒绝下载,例如盗链!
  • Content-Type: application/x-www-form-urlencoded:表单的数据类型,说明会使用 url 格式的 UTF-8 编码数据;url 编码的数据都是以 “%” 为前缀,后面跟随两位的 16 进制;
  • Content-Length:32:表示请求数据的长度,这里表示 32 个字节。
    在这里插入图片描述
  • username=weiyuxuan:这是请求正文!weiyuxuan 是在表单中输入的数据,username 是文本框的名字。

二、响应协议

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
① HTTP/1.1 200 OK:响应协议为HTTP1.1,状态码为200,表示请求成功,OK是对状态码的解释;
② Server: Apache-Coyote/1.1:这是服务器的版本信息;
③ Content-Length: 21630:响应的内容为 21630 字节;

三、其他

1、常见状态码

  • ① 404 not found:没有找到;
  • ② 500 error:找到了,但内部出错;
  • ③ 200 ok:成功!

2、请求:GET/POST

  • 只有表单才可能是 POST,其他都是 GET;
  • POST 有正文,即表单内容:username=weiyuxuan&password=123;
  • GET 没有正文,但是空行可是有的!

请求首行:(GET/POST) URL HTTP/1.1
响应首行:HTTP/1.1 状态码 状态码的解释
响应的正文就是 HTML!

Post 请求:有正文,而且正文内容不受限制,通过表单的方式提交(除了表单方式的提交时post请求方式,其余的都是get请求)。
在这里插入图片描述

如有错误,欢迎指正!