初识HTTP协议

2 篇文章 0 订阅

初识HTTP协议

1. 简介

HTTP,超文本传输协议(Hypertext Transfer Protocol),是网络五层模型中的应用层的协议。作用是处理资源的请求响应过程。如图,HTTP就是定义了请求端和应答端之间通信的格式:
在这里插入图片描述

如果说把TCP IP协议比作是快递,通过IP和Port将物品送至到正确的买家,那么HTTP这样的应用层协议就好比是说明书,指导用户如何使用这个物品。

2. HTTP报文格式

在这里插入图片描述
在这里插入图片描述

请求和相应的报文格式类似,都是请求行 + 请求头 + 空行 + 请求体

HTTP请求

GET http://vams.cqvip.com/manage/plugin/jquery-easyui/jquery.min.js HTTP/1.1
Host: vams.cqvip.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Accept: */*
Referer: http://vams.cqvip.com/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7,en-US;q=0.6,zh-HK;q=0.5
Cookie: username=1931053955; schoolCode=11560; password=cheng255;
  • 首行: [方法] + [URL] + [版本]

  • Header: 请求的属性, 键值对存在,键和值之间用:分割,每组属性之间使用\n分隔;遇到空行表示Header部分结束

  • Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度;

    如上述的请求就没有请求体。

HTTP响应


```html
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"83059-1545037041351"
Last-Modified: Mon, 17 Dec 2018 08:57:21 GMT
Content-Type: application/javascript;charset=UTF-8
Content-Length: 83059
Date: Sat, 20 Mar 2021 04:04:31 GMT

/*! jQuery v2.0.0 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
*/

和请求不同的是 首行: [版本号] + [状态码] + [状态码解释]

返回的Body内容解析格式由请求头中的Content-Type字段决定。

1. HTTP 的请求方法

在这里插入图片描述

常用的就是GET和POST,GET和POST的区别:

  1. GET的请求没有请求体,数据只能放在URL后面,POST的数据可以放在URL和请求体。
  2. URL长度有一定的限制,所以GET方法请求数据长度有限制,并且URL只能传输ascii字符,所以如果有其他字符需要传输,需要序列化等操作。
  3. POST的安全性更好,因为数据放在URL中会暴露在外面,没有放在请求体里安全。
  4. GET可请求以收藏为书签,POST请求不能。
  5. GET参数保留在浏览器历史种,POST不会。
2. HTTP的状态码

在这里插入图片描述

常用的状态码:

  • 200 OK 请求成功
  • 301 Moved Permanently 永久移动。请求的资源已经被永久的移动到新的URL,返回信息会包括新的URL,浏览器会自动定向到新的URL。以后任何新的请求都应使用新的URL代替。
  • 302 Found 临时移动。资源知识临时被移动,URL不变。
  • 307 Temporary Redirect 临时重定向。
  • 400 Bad Request 客户端请求服务端无法理解。一般是HTTP协议格式或者数据的格式有问题。
  • 404 Not Found 服务器无法找到资源。URL和资源路径没有映射正确。
  • 405 客户端请求中的方法被禁止。服务端没有提供客户端请求的方法。
  • 500 Internal Server Error 服务器内部错误,无法完成请求,一般是服务端抛异常的时候。
3. HTTP常见的Header
  • Content-Type: 数据类型(text/html, json/application等)

  • Content-Length: Body的长度

  • Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;

  • User-Agent: 声明用户的操作系统和浏览器版本信息;

  • referer: 当前页面是从哪个页面跳转过来的;

  • location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;

  • Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;

3. 与HTTP相关的协议

  • DNS协议:我们在访问页面时,经常使用www.baidu.com这样的域名。但在TCP传输时,却是 IP 到 IP 的传输,DNS协议就是可以将域名和IP地址相互映射的系统。

  • TCP:HTTP协议就是基于TCP进行数据传输的。 TCP详解

  • HTTPS:HTTPS在通信过程中对数据进行加密操作和认证机制。HTTPS并不是什么新协议,知识HTTP通信接口部分用SSL(Secure Socket Layer)和 TLS(Transport Layer Security) 协议替代而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值