HTTP 简介:

  1、Hyper Text Transfer Protocol(超文本传输协议),主要用于 Web 浏览器和 Web 服务器之间的通信

  2、它基于 TCP/IP 通信协议来传输数据

  3、主要特点:

    ① 简单快速:客户端向服务器请求服务时,只需传送请求方法和路径

    ② 灵活:允许传输任意类型的数据对象,由 Content-Type 标记类型

    ③ 无连接:限制每次连接只处理一个请求

    ④ 无状态:服务器不会在两个请求之间保留任何数据

    ⑤ 支持 B/S(Browser/Server) 和 C/S (Client/Server) 模式

URL:

  1、格式:protocol :// hostname[:port] / path / [;parameters][?query]#fragment

参数 说明
protocol 指定使用的协议(如http、https等)
hostname

存放资源的服务器的域名系统(DNS) 主机名或 IP 地址。

在主机名前也可以包含连接到服务器所需的用户名和密码

(格式:username:password@hostname)

port 端口号,默认为80
path 路径,由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址
parameters 用于指定特殊参数的可选项
query

用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP。NET等技术制作的网页)传递参数,

可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开

fragment 锚记,用于指定网络资源中的片断 

  2、URI、URL 和 URN:

    ① URI(uniform resource identifier):统一资源标识符,它是一种抽象的资源标识,可以是相对,也可以是绝对的

    ② URL(uniform resource location):统一资源定位符,一个具体的 URI,指明如何定位这个资源,必须是绝对的

    ③ URN(uniform resource name):统一资源命名,通过名字来标识资源

HTTP 请求方法:

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

  2、POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。

                     POST 请求可能会导致新的资源的建立和/或已有资源的修改

  3、PUT:从客户端向服务器传送的数据取代指定的文档的内容

  4、DELETE:请求服务器删除指定的页面

  5、HEAD:类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头

  6、CONNECT:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器

  7、OPTIONS:允许客户端查看服务器的性能

  8、TRACE:回显服务器收到的请求,主要用于测试或诊断

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

  POST 和 GET 的区别:

    1、大小不同:GET 方式的数据以明文的形式放在 URL 的首部中,大小会受到 URL 大小的限制,

                            而 POST 则把数据放到报文里,大小由报文大小来确定

    2、安全性不同:我们可以通过 URL 来查看 GET 的内容,而 POST 则不行,因此,敏感信息不应使用 GET 来传输

    3、使用目标不同:两者都用于获取资源,但 GET 仅仅是查询,POST 则常用于发送一定内容进行某些修改操作

HTTP 请求/响应步骤:

  1、客户端连接到 Web 服务器:建立一个 TCP 连接

  2、发送 HTTP 请求:通过 TCP,客户端向 Web 服务器发送一个文本的请求报文

  3、服务器接受请求并返回 HTTP 响应:Web 服务器解析请求,定位请求的资源

  4、释放 TCP 连接:

    ① 若 connection 模式为 close ==》服务器主动关闭 TCP 连接

    ② 若 connection 模式为 keepalive ==》连接保持一段时间,在该时间内可以继续接收请求

  5、客户端浏览器解析 HTML 内容:

    ① 客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码

    ② 然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。

    ③ 客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示

注:一个请求报文由请求行、请求头部、空行和请求数据 4 部分组成

  一个响应报文由状态行、响应头部、空行和响应数据 4 部分组成

状态码:

  

状态码 含义
1** 服务器收到请求,需要请求者继续执行操作
2** 成功,操作成功地被接收并处理
3** 重新定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误

  常见状态码:

    200:请求成功

    301:资源被永久转移到求它 URL

    404:请求资源不存在

    500:内部服务器错误

HTTP 简述的更多相关文章

  1. 简述 OAuth 2.0 的运作流程

    本文将以用户使用 github 登录网站留言为例,简述 OAuth 2.0 的运作流程. 假如我有一个网站,你是我网站上的访客,看了文章想留言表示「朕已阅」,留言时发现有这个网站的帐号才能够留言,此时 ...

  2. JavaScript单线程和浏览器事件循环简述

    JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...

  3. Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part3-factory/ Design ...

  4. Android网络定位服务定制简述

    Android 添加高德或百度网络定位服务 Android的网络定位服务以第三方的APK方式提供服务,由于在国内Android原生自带的com.google.android.gms服务几乎处于不可用状 ...

  5. 《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述

    微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF ...

  6. 简述ASP.NET MVC原理

    1.为什么ASP.NET需要MVC? 因为随着网站的的数量级越来越大,原始的网站方式,这里指的是WebForm,在运行速度和维护性方面,以及代码量上面,越来越难以满足日益庞大的网站维护成本.代码的重构 ...

  7. Design Patterns Simplified - Part 2 (Singleton)【设计模式简述--第二部分(单例模式)】

    原文链接: http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part-2-singleton/ De ...

  8. 【翻译】设计模式学习系列1---【Design Patterns Simplified: Part 1【设计模式简述:第一部分】】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part1/ Design Pattern ...

  9. Android开发3:Intent、Bundle的使用和ListView的应用 、RelativeLayout(相对布局)简述(简单通讯录的实现)

    前言 啦啦啦~博主又来骚扰大家啦~大家是不是感觉上次的Android开发博文有点长呢~主要是因为博主也是小白,在做实验的过程中查询了很多很多概念,努力去理解每一个知识点,才完成了最终的实验.还有就是随 ...

  10. iOS开发路线简述

    1 iOS开发环境1.1 开发环境标准的配置是MacOSX+Xcode.MacOSX的话首选用苹果电脑,Macmini最便宜只要4000多就好了然后自己配一个显示器,MacBookPro 也可以,不推 ...

随机推荐

  1. 2019年Java面试题基础系列228道(1)

    1.面向对象的特征有哪些方面? 面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些行为 ...

  2. FontLab VI for Mac 键盘快捷键

    使用FontLab VI for Mac,您可以创建,打开,修改,绘制,空间,文字,提示和导出桌面,网页,颜色和可变字体.该应用程序是一个全能的字体编辑器,但也支持与其他字体创建工具的数据交换,使其易 ...

  3. 用Python在25行以下代码实现人脸识别

    在本文中,我们将看到一种使用Python和开放源码库开始人脸识别的非常简单的方法. OpenCV OpenCV是最流行的计算机视觉库.最初是用C/C++编写的,现在它提供了Python的API. Op ...

  4. spingboot 2.1.3 与 elasticsearch7 兼容问题

    pom 加入 elasticsearch7  的依赖, <dependency> <groupId>org.elasticsearch</groupId> < ...

  5. Jmeter 查看结果树之界面功能介绍 [8]

    查看结果树显示所有请求响应的树,通过它可以查看任何请求的响应.除了显示响应之外,还可以查看获取响应所花费的时间以及一些响应代码.需要通过"查看结果树"来查看服务器处理请求之后的返回 ...

  6. CF977D Divide by three, multiply by two

    题目链接 我同学在旁边做者道题,我也看了一下 真的好水难 一看这道题,直接搜索 剪枝是不可能剪枝的一辈子不可能 Code #include <cstdio> #include <io ...

  7. python面向对象-1

    1.面向对象的思想优点 优点: 简化代码 ,构建公共模板 ,扩展性强 思想: 类作为模板 ,对象通过模板实例化对象 ,对象去做事 ,抽象将显示存在的事物使用代码体现 2.三大特性 封装(狭义) : 对 ...

  8. MySQL 8.0部分弃用的参数整理

    最近整理了一下MySQL 8.0的自动化安装,其中用到了一个MySQL 5.7版本的自定义配置文件,由于没有对(MySQL 8.0)做针对性修改,导致安装过程中出现了一些错误其中部分原因就是MySQL ...

  9. python 基础学习笔记(6)--函数(2)

                                                                                                        ...

  10. Linux系统学习 十七、VSFTP服务—本地用户访问—用户访问控制

    FTP相关文件中用户控制列表文件 /etc/vsftpd/ftpusers        #该文件永远都是黑名单(针对访问ftp服务,一般不做修改) /etc/vsftpd/user_list     ...