简述http协议

  • 超文本传输协议(HyperText Transfer Protocol)是一种应用层协议。
  • HTTP是万维网的数据通信的基础。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法
  • 请求request-响应response 式模式

Content-Type指示响应的内容

请注意,浏览器就是依靠Content-Type来判断响应的内容是网页还是图片,是视频还是音乐。浏览器并不靠URL来判断响应的内容,所以,即使URL是http://www.baidu.com/meimei.jpg,它也不一定就是图片。

浏览器解析过程

当浏览器读取到新浪首页的HTML源码后,它会解析HTML,显示页面,然后,根据HTML里面的各种链接,再发送HTTP请求给新浪服务器,拿到相应的图片、视频、Flash、JavaScript脚本、CSS等各种资源,最终显示出一个完整的页面。所以我们在Network下面能看到很多额外的HTTP请求。

1. HTTP协议特点

  • 传输网页资源的协议
  • 基于TCP协议实现的应用层协议
  • 99年公布HTTP/1.1版本
  • 请求request-响应response式

2. HTTP请求报文格式说明

  • GET / HTTP/1.1
  • 请求行 request line
    • 请求方法 资源请求路径
  • HTTP协议版本\r\n
    • GET方法浏览器获取网页资源
    • POST方法浏览器向服务器发送数据

请求行 后续都是请求头部[头名称: 头值\r\n]

  • Host: itcastcpp.cn
    • 代表 浏览器请求的主机名字
  • Connection: keep-alive
    • 代表长连接keep-alive 还是 短连接close方式
  • User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) - - - - - Chrome/64.0.3282.186 Safari/537.36
    • 代表 浏览器身份 网页适配 初步反爬
  • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
    • 代表浏览器能够接受的 文件类型
  • Accept-Encoding: gzip, deflate
    • 可以接受的压缩方式 -- 节约带宽资源 提高文件的传输效率
  • Accept-Language: zh-CN,zh;q=0.9
    • 可以接受的语言文件
  • 空行 \r\n
  • 请求体
    • GET方式请求 一般请求体为空
    • POST方式请求 请求体中存储的就是 浏览器要发送给服务器的数据(图片 文件 用户数据)

3. HTTP请求报文总结

  • 请求行[方法 资源请求路径 版本\r\n]
  • 请求头[头名称: 头值\r\n]
  • 空行 [\r\n]
  • 请求体[浏览器要发送给服务器的数据]

4. HTTP请求数据的实例

GET / HTTP/1.1\r\nHost: 127.0.0.1:8888\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Accept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7\r\n
Connection: keep-alive\r\n
Upgrade-Insecure-Requests: 1\r\n
X-Lantern-Version: 4.4.2\r\n
\r\n

5. HTTP响应数据实例-了解

HTTP/1.1 200 OK\r\n
Server: nginx/1.6.3\r\nDate: Sun, 11 Mar 2018 04:33:10 GMT\r\n
Content-Type: text/html\r\nContent-Length: 612\r\n
Last-Modified: Sat, 02 Sep 2017 15:23:27 GMT\r\n
Connection: keep-alive\r\nETag: "59aaccef-264"\r\n
Accept-Ranges: bytes\r\n
\r\n
<!DOCTYPE html>
\n<html>
\n<head>\n
<title>Welcome to nginx!</title>
\n<style>\n    
body {
\n        width: 35em;
\n        margin: 0 auto;
\n        font-family: Tahoma, Verdana, Arial, sans-serif;
\n    }
\n</style>
\n</head>
\n<body>
\n<h1>Welcome to nginx!</h1>
\n<p>If you see this page, the nginx web server is successfully installed and\nworking. Further configuration is required.</p>\n
\n<p>For online documentation and support please refer to
\n<a href="http://nginx.org/">nginx.org</a>.<br/>\nCommercial support is available at
\n<a href="http://nginx.com/">nginx.com</a>.</p>\n
\n<p><em>Thank you for using nginx.</em></p>
\n</body>
\n</html>
\n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值