首页 > 其他分享 >HTTP协议总结

HTTP协议总结

时间:2022-11-04 11:06:13浏览次数:55  
标签:总结 协议 HTTP 请求 html 1.1 服务器 客户端


一、简介

HTTP也叫超文本传输协议,是应用层协议,支持C/S模式,浏览器作为HTTP的客户端通过url向HTTP服务端,也就是WEB服务器发送请求。
http协议是无连接,无状态的。无连接指的是当服务器处理完客户端的请求,并收到客户的应答后,断开链接;无状态指的是对于事务处理没有记忆能力。

二、HTTP请求

http请求由四部分组成:
请求行,消息报头,空行,请求正文

1. 请求行

请求行由三部分组成:
方法+url+版本
其中请求方法有很多,具体如下表所示:

方法

含义

GET

请求指定的页面信息,并返回实体主体

HEAD

类似于get,但返回的响应中没有具体内容,用于获取报头

PUT

从客户端向服务器端传递的数据取代指定文档的内容

DELETE

请求服务器删除指定的页面

POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件),POST 请求可能会导致新的资源的建立或已有资源的修改

CONNECT

要求将连接改为管道方式的代理服务器

OPTIONS

允许客户端查看服务器的性能

TRACE

请求服务器在响应中的实体主体中返回所收到的请求内容

PATCH

对 PUT 方法的补充,用来对已知资源进行局部更新

eg1:请求资源
请求:

GET /index.html HTTP/1.1
HOST:www.xxxx

响应:返回www.xxxx/index.html的页面资源

eg2:传输实体
请求:

POST /index.cgi HTTP/1.1
Host:www.xxxx
Content-Length:1560

响应:
返回cgi程序接收数据的处理结果

eg3:传输文件
请求:

PUT /index.html HTTP/1.1
Host:www.xxxx
Content-Type:text/html
Content-Length:1560

eg4:获取报文首部
与get方法一样,只是不返回报文主体,一般用于确认URL的有效性及更新时间等

eg5:删除文件
请求:

DELETE /index.html HTTP/1.1
Host:www.xxxx

与put相反

eg6:询问服务器支持的方法
请求:

OPTIONS * HTTP/1.1 
Host:www.xxxx

响应:

HTTP/1.1 200 OK
Allow:GET,POST,HEAD,OPTIONS

注:如果不是访问特定资源而是对服务器本身发起请求,可以用* 代替请求url

eg7:追踪路径
请求:

TRACE / HTTP/1.1
Host:www.xxxx
Max-Forward:2

响应:

HTTP/1.1 200 OK
Content-Type:message/http
Content-Length:1024

TRACE / HTTP/1.1
Host:www.xxxx
Max-Forward:2

注:Max-Forward值,每经过一个服务器就-1,当为0时停止继续传输,当前服务器返回状态码为200的响应。

eg8:用隧道协议连接代理
请求:

CONNECT index.html HTTP/1.1
Host:www.xxxx

自己的理解:
(1). 一个 url 地址,用于描述一个网络上的资源,而HTTP中常用的请求方法put,delete,get,post就对应着对这个资源的增、删、查、改4个操作。
(2). GET一般用于获取资源信息,而POST一般用于更新资源信息。还有一个区别是参数:不带参数时,区别就是第一行方法名不同;带参数时,GET 方法的参数应该放在 url 中(写在 ? 后面,用 & 分割),POST 方法参数应该放在 body 中。

2. 消息报头

指的是本次请求的属性,是用冒号分割的键值对;每组属性之间使用\n分隔。
常见的请求报头header字段:

字段

含义

Accept

指定客户端接收哪些类型的信息。eg:text/html:希望接收html的文本文件

Accept-Encoding

指定可接收的内容编码

Accept-Language

用于指定接收的自然语言

Authorization

用于证明客户端有权查看某个资源

Host

用于指定被请求资源的Internet主机和端口号,即域名,一般从url中提取出来,默认端口是80,可以指定端口

User-Agent

服务器可以从这个报头域中获取客户端的操作系统、浏览器和其它属性

refer

告诉服务器客户是从哪个页面链接过来的

cookie

由于HTTP是无状态协议,但是为了实现期望的保持状态功能,引入了cookie技术。

3. 空行

用来区分报头与报文,遇到空行表示Header部分结束

4. 请求正文

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

三、HTTP响应

HTTP响应也是四个部分组成:
分别是:状态行,消息报头,空行,响应正文.

1、状态行

状态行由三部分组成:
版本号+状态码+状态码解释
这里状态码分为很多种,解释如下:
状态代码由三种数字组成,第一个数字定义了响应的类别,有五种可能取值:

类别

解释

1xx

Informational(信息性状态码)

接受的请求正在处理

2xx

Success(成功状态码)

请求正常处理完毕

3xx

Redirection(重定向状态码)

需要进行附加操作以完成请求

4xx

Client Error(客户端错误状态码)

服务器无法处理请求

5xx

Server Error(服务端错误状态码)

服务器处理请求出错

常见的状态码解释:

状态码

解释

200

OK(客户请求成功)

400

Bad Request(客户端请求由于语法错误,不能被服务器所理解 )

403

Forbidden(服务器收到请求,但是拒绝提供服务 )

404

Not Found (请求资源不存在,eg:输入了错误的URL )

500

Internal Server Error(服务器发生不可预期的错误 )

503

Server Unavailable(服务器当前不能处理客户端的请求,一段时间后,可能恢复正常 )

2、Header

Header: 冒号分割的键值对;每组属性之间使用\n分隔
常见响应字段:

字段

解释

Accept-Ranges

是否接受字节范围请求

Age

推算资源创建经过时间

ETag

资源的匹配信息

Location

令客户端重定向至指定URI

Proxy-Authenticate

代理服务器对客户端的认证信息

Retry-After

对再次发起请求的时机请求

Server

HTTP服务器的安装信息

Vary

代理服务器缓存的管理信息

WWW-Authenticate

服务器对客户端的认证信息

实体首部字段

针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体相关的信息。

字段

含义

Allow

资源可支持的HTTP方法

Content-Encoding

实体主体适用的编码方法

Content-Language

实体主体的自然语言

Content-Length

实体主体的大小(字节)

Content-Location

替代对应资源的URI

Content-MD5

实体主体的报文摘要

Content-Range

实体主体的位置范围

Content-Type

实体主体的媒体类型

Expires

实体主体过期的日期时间

Last-Modified

资源的最后修改日期时间

3、空行

遇到空行表示Header部分结束

4、body

空行后面的内容都是Body.
Body允许为空字符串. 如果Body存在, 则在Header中会有一个 Content-Length属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在 body中。

四、HTTP和HTTPS的区别

区别主要是在传输层加入了SSL(或TLS)。改变了HTTP协议的明文传输方式,保护了数据的安全性和完整性,提供对网站服务器的身份认证。

  1. HTTPS协议需要申请证书,一般免费证书很少,需要交费。
  2. http以明文的形式传输信息,https则是具有安全性的ssl加密传输协议
  3. HTTP和HTTPS使用的是完全不同的连接方式,用的端口不同,前者是80,后者是443
  4. HTTPS 在 HTTP 传输协议的基础上对网站进行认证,给予它独一无二的身份证明,再对网站数据进行加密,并对传输的数据进行完整性验证。


标签:总结,协议,HTTP,请求,html,1.1,服务器,客户端
From: https://blog.51cto.com/u_15861560/5822295

相关文章

  • TDengine:无模式写入行协议的四种方式
    小T导读:为了在数据采集项频繁变动的情况下保证用户仍然能够顺利地完成数据记录工作,TDengine 提供了三种无模式写入协议,分别是InfluxDBLine协议、OpenTSDB Telnet协......
  • 记一次生产环境WAS9与NC配置https
    首先获取证书(客户提供)然后把证书传到服务器的/opt/IBM9/HTTPServer/bin/目录下这里客户提供的证书是crt格式的,首先我们转换成p12格式的证书我们找到我们传到服......
  • CSP2022 总结
    CSP2022总结考挂了。上来20minT1想了个假做法,很快敲完发现大样例没过,改了大概20min,没发现哪里错了。先看T2,shaber题,冲巨大分讨。中途改大样例改了挺久。写法一开始没......
  • VirtualBox 下 CentOS7 静态 IP 的配置 → 多次踩坑总结,蚌埠住了!
    开心一刻一个消化不良的病人向医生抱怨:我近来很不正常,吃什么拉什么,吃黄瓜拉黄瓜,吃西瓜拉西瓜,怎样才能恢复正常呢?医生沉默片刻:那你只能吃屎了环境准备Virt......
  • ASP.NET Core教程-Configuration(配置)- HTTPS
    更新记录转载请注明出处:2022年11月4日发布。2022年11月1日从笔记迁移到博客。强制使用HTTPS在中间件配置中,使用UseHttpsRedirection中间件。app.UseHttpsRedir......
  • IS-IS动态路由协议笔记(中)路由计算方法
    IS-IS动态路由协议笔记(中)路由计算方法中间系统到中间系统(IS-IS,Intermediatesystemtointermediatesystem,读作“i-sys”)是一种内部网关协议,是电信运营商普遍采用的......
  • vue组件通信6种方式总结(常问知识点)
    前言在Vue组件库开发过程中,Vue组件之间的通信一直是一个重要的话题,虽然官方推出的Vuex状态管理方案可以很好的解决组件之间的通信问题,但是在组件库内部使用Vuex往往会......
  • React组件之间的通信方式总结(上)
    先来几个术语:官方我的说法对应代码ReactelementReact元素letelement=<span>A爆了</span>Component组件classAppextendsReact.Component{}无Ap......
  • 百度前端react面试题总结
    componentWillReceiveProps调用时机已经被废弃掉当props改变的时候才调用,子组件第二次接收到props的时候在调用setState之后发生了什么状态合并,触发调和:setState......
  • React组件之间的通信方式总结(下)
    一、写一个时钟用react写一个每秒都可以更新一次的时钟importReactfrom'react'importReactDOMfrom'react-dom'functiontick(){letele=<h1>{ne......