HTTP协议学习(一)
一。HTTP报文的组成
请求报文由 请求行、请求头、请求空行、请求实体四部分组成。其中,请求行和请求头共同组成 请求报文头部
请求行:一行,依次由 请求方法、URI(或者应该说是域名?)、HTTP协议版本 三部分组成
请求头:由 通用首部字段、请求首部字段、实体首部字段 三部分组成
空行
请求实体(请求报文实体)
响应报文由 响应行、响应头、响应空行、响应实体四部分组成。其中,响应行和响应头共同组成响应报文头部
响应行:一行,依次由 HTTP协议版本、状态码、状态码简介 三部分组成
响应头:由 通用首部字段、响应首部字段、实体首部字段 三部分组成
空行
响应实体(响应报文实体)
二。请求方法
HTTP1.1总共有种请求方法
都是针对请求URI做出的动作
1.GET 请求资源
2.POST 提交数据,传输实体主体
3.PUT 传输文件
4.HEAD 获取报文首部
5.DELETE 删除文件
6.OPTION 询问支持的方法
7.TRACE 追踪路径,Max-Forwards首部字段中填入数值,每经过一个服务器则减1,数值变为0时停止传输,最后收到请求的服务器返回200 OK
8.CONNECT 与代理服务器间建立隧道(使用SSL(Secure Socket Layer,安全套接层)和TLS(Transport Layer Secure,传输层安全)加密的通信通道)
GET 和 POST的比较:
(1)是否可保存为书签:GET能被保存为书签;POST不能
(2)是否可以缓存:GET能被缓存;POST不能
(3)参数是否能保存为浏览器历史:GET中的参数能保存在浏览器历史里;POST的参数不能
(4)数据类型限制:GET只允许ASCII码字符;POST无数据类型限制,可以为二进制数据,因为POST的数据作为一个整体放在请求报文实体里
(5)数据是否可见:GET的数据可见,因为用 ? 和 & 拼接在URL中;POST的数据不可见
(6)数据是否安全:GET中的数据不安全;POST比GET更安全
(7)数据的长度限制:GET有长度限制,URL最长2048个字符;POST数据内容无长度限制
(8)后退/刷新是否有害:GET无害;POST会重复提交数据
三。状态码
总共有5种不同类别的状态码。总结如下
| 状态码 | 类别 | 含义 |
|---|---|---|
| 1XX | Informational(信息性状态码) | 接收的请求正在处理 |
| 2XX | Success(成功状态码) | 请求正常处理完毕 |
| 3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
| 4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
| 5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
常见的状态码有:
100:Continue 一切正常 ,客户端可以继续发送请求
200:OK
204:Not Content 请求正常处理,但返回的响应报文中不含实体的主体部分(无资源返回)
206:Partial Content 表示客户端进行了范围请求,服务器成功执行。响应报文中包含由 Content-Range 指定范围的实体内容
301:Moved Permanently 永久重定向
302:Found 临时性重定向。表示请求的资源已分配新的URI,希望用户本次使用新URI访问
303:See Other 和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源
304:Not Modified 请求报文首部包含条件(如:If-Match),不满足条件是返回 304
307:Temporary Redirect 临时性重定向。POST方法不会变为GET方法
注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都会在 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。
400:Bad Request 错误请求(请求报文中存在语法错误)
401:Unauthorized 请求需要HTTP认证信息
403:Forbidden 该资源拒绝访问
404:Not Found 无法找到请求的资源
500:Internal Server Error 服务器发生错误
503:Service Unavailable 服务器繁忙(超负载或正在停机维护)
HTTP协议学习(一)的更多相关文章
- TCP/IP协议学习(五) 基于C# Socket的C/S模型
TCP/IP协议作为现代网络通讯的基石,内容包罗万象,直接去理解理论是比较困难的:然而通过实践先理解网络通讯的理解,在反过来理解学习TCP/IP协议栈就相对简单很多.C#通过提供的Socket API ...
- http协议学习系列
深入理解HTTP协议(转) http://www.blogjava.net/zjusuyong/articles/304788.html http协议学习系列 1. 基础概念篇 1.1 介绍 H ...
- BGP协议学习总结
BGP学习总结 BGP是目前使用的唯一的自治系统间的路由协议,它是一种矢量路由协议,基于TCP的179号端口,它采用单播增量更新的方式更新路由,与其他的路由协议不同的是,BGP只要TCP可达,就可以建 ...
- TCP/IP协议学习之实例ping命令学习笔记
TCP/IP协议学习之实例ping命令学习笔记(一) 一. 目的为了让网络协议学习更有效果,在真实网络上进行ping命令前相关知识的学习,暂时不管DNS,在内网中,进行2台主机间的ping命令的整个详 ...
- HTTP协议学习笔记(四)
HTTP协议学习笔记(四) 与 HTTP 协作的 Web 服务器 一台 Web 服务器可搭建多个独立域名的 Web 网站,也可作为通信路径上的中转服务器提升传输效率. 1.用单台虚拟主机实现多个域名 ...
- HTTP协议学习笔记(三)
HTTP协议学习笔记(三) 1.状态码告知从服务器端返回的请求结果 状态码的职责是当客户端向服务端向服务端发送请求时,描述返回的请求结果.借助状态码,用户可以知道服务端是正常处理了请求,还是出现了错误 ...
- HTTP协议学习笔记(二)
HTTP协议学习笔记(二) 1.HTTP报文 HTTP报文:用于HTTP协议交互的信息.请求报文:请求端(客户端)的HTTP报文叫做请求报文.响应报文:响应端(服务端)的HTTP报文叫做响应报文. H ...
- HTTP协议学习笔记(一)
HTTP协议学习笔记(一) 1.HTTP协议用于客户端和服务端之间的通信 客户端:请求访问文本或图像等资源的一端服务端:提供资源响应的一端 在两台计算机之间使用HTTP协议通信时,在一条通信线路上必定 ...
- 网关协议学习:CGI、FastCGI、WSGI
网关协议学习:CGI.FastCGI.WSGI https://www.biaodianfu.com/cgi-fastcgi-wsgi.html
- 苹果ANCS协议学习【转】
苹果ANCS协议学习 转自:http://www.cnblogs.com/alexcai/p/4321514.html 综述 苹果通知中心(Apple Notification Center Serv ...
随机推荐
- python jieba库
https://www.cnblogs.com/snailclimb/p/9086433.html https://blog.csdn.net/codejas/article/details/8035 ...
- post文件下载
this.$http({ method: 'post', url: '/file/download', responseType: 'blob', data: JSON.stringify(this. ...
- SqlServer 连接 相关。
sqlserver数据库连接池是一个客户端的东西.和sql server服务器无关. 各种provider默认的连接池大小不同. 比如:Ado.NET 中sqlserver 连接池默认的值是100. ...
- 1.Spring AOP应用
首先咱们来了解一下具体的业务场景(这是个真实的项目的业务场景):具体的业务是这样的,现在系统中有六十多个主档(功能模块),每个主档都有新增.修改.删除功能,当我们在对每个主档做这些操作时需要对其记录日 ...
- css基础回顾
1.css选择器分类: id选择器,类选择器,通用选择器, 包含(后代)选择器——加入空格,用于选择指定标签元素下的后辈元素. 子选择器(大于符号)——用于指定标签元素的第一代子元素. 伪类选择器—— ...
- Delphi Excel导入 的通用程序
步骤: 1 连excel(自己知道其格式,最好是没个字段在数据一一对应) 2 读excel数据,填入到数据库 我这里有个函数,实现把excel表格中数据导入数据库,在一条数据导入前判断数据库中是否有该 ...
- VS2013和NuGet
1.前言 有时候在使用VS2013时需要用到第三方的dll,这时候NuGet就是一个很方便的工具.但是这个小东东也是和VS不同的版本相关的,最开始不知道,乱安装一气,最后就是很多情况下不能用.这两天在 ...
- 【javascript】谈谈HTML5: Web-Worker、canvas、indexedDB、拖拽事件
前言:作为一名Web开发者,可能你并没有对这个“H5”这个字眼投入太多的关注,但实际上它早已不知不觉进入到你的开发中,并且总有一天会让你不得不正视它,了解它并运用它 打个比方:<海贼王> ...
- JDK1.7和JDK1.8对于异常的支持
嗨喽,伙伴们,上次我们讲了<Java异常解读以及通过业务逻辑解决异常的方式>和<java异常处理方式try-catch-finally>,相信大家对java异常及处理方式有所了 ...
- Javascript高级编程学习笔记(48)—— HTML5
HTML变动最大的版本应该就是HTML5了,这里就介绍一些 HTML5新增的DOM相关的API 与类相关的扩充 HTML4在普及后有一个十分重要的变化,即class属性使用的场景越来越多 所以HTML ...