http学习笔记

http学习笔记

HTTP(Hyper Text Transfer Protocol)协议:超文本传输协议的缩写.

  1. 基于TCP/IP通信协议来传递数据.
  2. HTTP默认端口号为80,但是你也可以改为8080或者其他端口。
  3. HTTP协议工作于客户端/服务端(C/S)架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
  4. HTTP是明文传输的,也就意味着,介于发送端、接收端中间的任意节点都可以知道你们传输的内容是什么。这些节点可能是路由器、代理等。

HTTPS:(Hypertext Transfer Protocol Secure:超文本传输安全协议).

  1. HTTPS 默认工作在TCP协议443端口.
  2. HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

http的三个特点:

  1. 无连接:每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  2. 媒体独立:只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送.
  3. 无状态:无状态是指协议对于事务处理没有记忆能力。

HTTP1.0 定义了三种请求方法:

  1. GET :通常用于请求服务器发送某个资源.
  2. POST:向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。
  3. HEAD:与GET方法的行为很类似,但服务器在响应中只返回实体的主体部分。这就允许客户端在未获取实际资源的情况下,对资源的首部进行检查。

HTTP1.1 新增了六种请求方法:

  1. OPTIONS:用于获取当前URL所支持的方法。则它会在HTTP头中包含一个名为Allow的头,值是所支持的方法,如GET, POST。
  2. PUT :是让服务器用请求的主体部分来创建一个由所请求的URL命名的新文档;如果那个文档存在的话,就用这个主体来代替它。
  3. PATCH :
  4. DELETE :请求服务器删除指定URL所对应的资源。但是允许服务器在不通知客户端的情况下撤销请求。
  5. TRACE :在目的服务器端发起一个“回环”诊断.
  6. CONNECT:

GET和POST的区别:

  1. GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连。如果包含中文或其他特殊字符,则把字符串用BASE64加密.得出如%E5%A5%BD的字符串,其中%XX中的XX为该符号以16进制表示的ASCII码值。
  2. POST把提交的数据放置在HTTP包的包体中.

http的报文请求与响应

请求报文的格式:request

响应报文的格式:在这里插入图片描述

下面是一个简单的请求报文与应答报文实例:

//客户端请求:
GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi

//服务端响应
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

HTTP状态码:由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型
1**:信息,服务器收到请求,需要请求者继续执行操作
2**:成功,操作被成功接收并处理.
3**:重定向,需要进一步的操作以完成请求
4**:客户端错误,请求包含语法错误或无法完成请求
5**:服务器错误,服务器在处理请求的过程中发生了错误

下面是常见的HTTP状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误

常见http请求头:具体详见此链接

  1. User-Agent :告诉服务器,客户端使用的操作系统、浏览器版本和名称
  2. Host :指定要请求的资源所在的主机和端口
  3. Accpet :告诉服务端,客户端接收什么类型的响应.
  4. Accept-Language:浏览器当前设置的语言。
  5. Accept-Encoding:告诉服务器能接受什么编码格式,包括字符编码,压缩形式.

常见http响应头 :具体详见此链接

  1. Transfer-Encoding:表示实体传输给用户的编码形式。包括:chunked、compress、 deflate、gzip、identity。eg:transfer-encoding:chunked
  2. Date :此条消息被发送时的日期和时间.date:Fri, 20 Nov 2020 00:59:21 GMT
  3. Connection :针对该连接所预期的选项.eg:connection: close
  4. Server :服务器名称。eg:Server: Apache
  5. Content-Type:用于定义网络文件的类型和网页的编码.详细参见此链接
    1. 格式如:Content-Type: text/html; charset=utf-8.
    2. 常见的媒体格式类型如下:
      1. text/html :HTML格式
      2. text/plain:纯文本格式
      3. text/xml :XML格式
      4. image/gif :gif图片格式
      5. image/jpeg:jpg图片格式
      6. image/png : png图片格式
      7. image/gif :gif图片格式
      8. image/jpeg:jpg图片格式
      9. image/png : png图片格式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

theboynoName

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值