超文本传输协议(HTTP)是用于传输诸如HTML的超媒体文档的应用层协议。它被设计用于Web浏览器和Web服务器之间的通信,但它也可以用于其他目的。 HTTP遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待它收到服务器端响应。 HTTP是无状态协议,意味着服务器不会在两个请求之间保留任何数据(状态)。

HTTP 的特性

  • HTTP 协议构建于 TCP/IP 协议之上,是一个应用层协议,默认端口号是 80

  • HTTP 是可扩展的,在 HTTP/1.0 中出现的 HTTP headers 让协议扩展变得非常容易。

  • HTTP 是无连接无状态的,注意,HTTP本质是无状态的,使用Cookies可以创建有状态的会话。

请求报文

  请求由以下元素组成:

  • 一个HTTP的method,经常是由一个动词像GET,POST 或者一个名词像OPTIONS,HEAD来定义客户端的动作行为。通常客户端的操作都是获取资源(GET方法)或者发送HTML form表单值(POST方法)。

  • 要获取的资源的路径,通常是上下文中就很明显的元素资源的URL,(HTTP一般在80端口)。

  • HTTP协议版本号。

  • 为服务端表达其他信息的可选头部headers。

  • 对于一些像POST这样的方法,报文的body就包含了发送的资源,这与响应报文的body类似。

响应报文

  响应报文包含了下面的元素:

  • HTTP协议版本号。

  • 一个状态码(status code),来告知对应请求执行成功或失败,以及失败的原因。

  • 一个状态信息,这个信息是非权威的状态码描述信息,可以由服务端自行设定。

  • HTTP headers,与请求头部类似。

  • 可选项,比起请求报文,响应报文中更常见地包含获取的资源body。

常见的状态码:

  • 200 OK 客户端请求成功

  • 301 Moved Permanently 请求永久重定向

  • 302 Moved Temporarily 请求临时重定向

  • 304 Not Modified 文件未修改,可以直接使用缓存的文件。

  • 400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解。

  • 401 Unauthorized 请求未经授权。这个状态代码必须和WWW-Authenticate报头域一起使用

  • 403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因

  • 404 Not Found 请求的资源不存在,例如,输入了错误的URL

  • 500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。

  • 503 Service Unavailable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。

HTTPS与HTTP的一些区别

  • HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。

  • HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。

  • HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

  • HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。

HTTP协议及常见状态码的更多相关文章

  1. http协议与常见状态码

    什么是http: http是属于应用层(基于tcp的连接方式)的面向对象的协议,是计算机通过网络通信的规则,使得浏览器向web服务器请求信息和服务 http协议特点: http是一种无状态协议(对食物 ...

  2. 了解一下Http常见状态码、Http协议的工作特点和原理、Http请求Post与Get的区别

    HTTP协议常见状态码状态码的作用负责标记客户端请求服务器的返回结果,标记服务器端的处理是否正常,通知出现的错误等等职责,借助客户端可以知道客户端是否正常请求服务端.五大类:1XX(信息类状态码,接收 ...

  3. HTTP协议、HTTP请求方法、常见状态码、HTTP消息

    HTTP协议 客户端请求,服务端响应.浏览器与服务器不建立持久连接,响应后连接失效. HTTP请求方法 一.GET GET方法用于获取请求页面的指定信息. 二.HEAD 除了服务器不能在响应里返回消息 ...

  4. 19. HTTP协议二:HTTP请求与响应、常见状态码

    HTTP请求与响应 HTTP请求 HTTP请求是指从客户端到服务器端的请求消息.HTTP请求主要由三部分构成,请求行.请求头(headers).body(请求数据). 上图是笔者用Charles抓包工 ...

  5. HTTP协议6之状态码--转

    HTTP状态码,我都是现查现用. 我以前记得几个常用的状态码,比如200,302,304,404, 503. 一般来说我也只需要了解这些常用的状态码就可以了.  如果是做AJAX,REST,网络爬虫, ...

  6. http常见状态码有哪些?

    ajax常见面试题 1:什么是ajax?ajax作用是什么? 异步的javascript和xml AJAX 是一种用于创建快速动态网页的技术. ajax用来与后台交互 2:原生js ajax请求有几个 ...

  7. 计算机网络【9】—— HTTP1.0和HTTP1.1的区别及常见状态码

    一.HTTP1.0与HTTP1.1的区别 1.HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理 HTTP 1.0规定浏览器与服务器只保持 ...

  8. Python Requests库 Get和Post的区别和Http常见状态码

    (1)   在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置在HTML HEADER内提交. (2)   GET方式提交的数据最多只能有1024 Byte,而P ...

  9. http常见状态码及其解析

    HTTP状态码常见状态码及其解析 状态码 状态码英文名称 中文描述 100 Continue 继续.客户端应继续其请求 101 Switching Protocols 切换协议.服务器根据客户端的请求 ...

随机推荐

  1. uni-app视频组件设置圆角

    无法实现,建议写个image在中间位置加个播放按钮,点击播放跳转新页面只需要在跳转参数里面把视频链接加上,在onLoad里面获取视频链接,自动播放视频,很多app目前都是这样做的,关闭页面后视频会自动 ...

  2. 什么是齐博x1标签

    X系列的标签跟V系列的标签区别还是很大的.在V系列的时候,只有一种很简单的标签比如$label[XXXX]以前的标签相对现在的来说太简单的点,所以在功能上也比较受限.X系列目前有几下几种标签 {qb: ...

  3. (四)DQL查询数据(最重点)

    4.1   DQL Data Query Language 数据查询语言 1   所有的查询操作都用它  Select 2   简单的查询,复杂的查询它都能做 3   数据库中最核心的语言,最重要的语 ...

  4. windows 上搭建 sftp 服务器 -freesshd全过程( 在linux上部署逐浪CMS的必读教程)

    文章标题: windows 上搭建 sftp 服务器 - freesshd全过程 关键字 : freesshd 文章分类: 教程 创建时间: 2020年3月23日 缘由 动手 第一步:添加用户 第二步 ...

  5. Django 小实例S1 简易学生选课管理系统 5 实现注册功能

    Django 小实例S1 简易学生选课管理系统 第5节--实现注册功能 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 本文涉及到的新的额外知识点: ...

  6. 基于EPPlus和NPOI实现的Excel导入导出

    基于EPPlus和NPOI实现的Excel导入导出 CollapseNav.Net.Tool.Excel(NuGet地址) 太长不看 导入 excel 文件流将会转为 ExcelTestDto 类型的 ...

  7. 正则表达式&&Java文本复杂操作

    正则表达式1.正则表达式的优势和用途? 一种强大而灵活的文本处理工具: 大部分编程语言 .数据库.文本编辑器.开发环境都支持正则表达式.2.正则表达式定义: 正如他的名字一样是描述了一个规则,通过这个 ...

  8. [luogu1526]智破连环阵

    (以下在描述复杂度时,认为$n$和$m$相同,因此一律使用$n$) 称第$i$个炸弹能匹配非空区间$[l,r]$,当且仅当$l$到$r$内所有武器都在$i$攻击范围内,且$r=m$或第$r+1$个武器 ...

  9. Lilypond+TexLive(LuaLatex+lyluatex)+VS Code实现谱文混排

    没想到发文章反而更难被预览了,那就复制一份到随笔里好了. 多次尝试之下,终于实现了现阶段谱文混排的最理想方式: 1. 综合Latex的排版(还有广泛适用人群)的优势以及Lilypond的美观优势: 2 ...

  10. MySQL联合索引的排列组合应用实战

    我们都知道,当数据表中的数据日益增长后,查询会变得越来越慢,当初在表设计之初,尚未考虑创建索引的话,那么现在正是必要的时候.可是,如果对于MySQL使用索引的策略不了解,或是脱离了具体业务场景,那么, ...