HTTP是计算机通过网络进行通信的规则,是一种无状态的协议,不建立持久的连接(客户端向服务器发送请求,web服务器返回响应,接着连接就被关闭了);

一个完整的HTTP请求连接,通常有下面7个步骤:

1、建立TCP连接(一般走的都是TCP连接)

2、web浏览器向web服务器发送请求命令

3、web浏览器发送请求头信息

4、web服务器应答

5、web服务器发送应答头信息

6、web服务器向浏览器发送数据

7、web服务器关闭TCP连接

一个HTTP请求一般由四部分组成:

1、HTTP请求的方法或动作,比如是GET还是POST请求

2、正在请求的URL,总得知道请求的地址是什么吧

3、请求头,包含一些客户端环境信息,身份验证信息等

4、请求体,也就是请求正文,请求正文中可以包含客户提交的查询字符串信息,表单信息等等,一般来说,请求头与请求体之间有一个空行,表示请求头已经结束,接下来的内容就是请求体

GET请求:一般用于信息获取,使用URL传递参数,对所有人都是可见的,但GET方法是安全的,对所发送的信息的数量也有限制,一般在200个字符。

POST请求:一般用于修改服务器上的资源,对其他人是不可见的,对所发送信息的数量无限制。

一个HTTP响应一般由三部分组成:

1、一个数字和文字组成的状态码,用来显示请求成功还是失败

2、响应头:响应头也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等

3、响应体:也就是响应正文

HTTP状态码由3位数字构成,其中首位数字定义了状态码的类型:

1xx:信息类,表示收到web浏览器请求,正在进一步的处理中;

2xx:成功,表示用户请求被正确接收,理解和处理,例如:200 ok;

3xx:重定向,表示请求没用成功,客户必须采取进一步的动作;

4xx:客户端错误,表示客户端提交的请求有错误,例如404 NOT Found,意味着请求中所引用的文档不存在;

5xx:服务器错误,表示服务器不能完成对请求的处理;如500

HTTP基础知识的更多相关文章

  1. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  2. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  3. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  4. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

  5. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  6. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  7. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  8. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  9. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

  10. APP测试入门篇之APP基础知识(001)

    前言        最近两月比较多的事情混杂在一起,静不下心来写点东西,月初想发表一遍接口测试的总结,或者APP测试相关的内容,一晃就月底了,总结提炼一时半会也整不完.放几个早年总结内部培训PPT出来 ...

随机推荐

  1. js---疑点代码段解析

    function count() { var arr = []; for (var i=1; i<=3; i++) { console.log("iii---"+i); ar ...

  2. 一步步优化JVM二:JVM部署模型和JVM Runtime

    选择JVM部署模型    JVM部署模型的选择总体来说就是决定应用是部署在单个JVM实例还是多个JVM实例上(这里简单举例说明一下JVM实例,比如:我们常用eclipse开发,启动一个eclipse就 ...

  3. 【转载】__name__ == "__main__": 你认识我么?

    <笨方法学Python>的习题50中,脚本ex50.py最后一行代码就是 if __name__ == "__main__": 那么,这句代码到底有什么用呢? 莫急莫急 ...

  4. CUDA编程入门,Dim3变量

    dim3是NVIDIA的CUDA编程中一种自定义的整型向量类型,基于用于指定维度的uint3. 例如:dim3 grid(num1,num2,num3): dim3类型最终设置的是一个三维向量,三维参 ...

  5. Python笔记6(异常)-20160924

    1. NameError 当视图访问一个未定义的变量则会发生NameError.

  6. 私有云Rabbitmq 集群部署

    默认openstack使用rabbitmq做信息队列,如果想要是云高可用,那么需要对每个涉及的组件都进行高可用配置,本文介绍如何使用rabbitmq 做高可用 高可用方法 通过 Erlang 的分布式 ...

  7. IE8下 Select文字垂直居中的办法

    .select { padding: 4px 0; height: 30px; line-height: 26px; vertical-align: middle;} 处理前: 处理后:

  8. python--day4--迭代器、生成器

    列表生成式: 需求:列表[1,2,3,4,5,6,7,8,9]每个值加1,实现的方法: a = [0,1,2,3,4,5,6,7,8,9] b = [] for i in a:b.append(i+1 ...

  9. Oracle Day 08 游标与例外的总结

    1.游标的使用(cursor) 基本格式: 定义游标:  cursor 游标名 is select语句; 打开游标:  open 游标名; loop(循环) fetch ... into ...;   ...

  10. TCP/IP 协议(摘抄)

    TCP/IP 协议 TCP/IP 是不同的通信协议的大集合. 协议族 TCP/IP 是基于 TCP 和 IP 这两个最初的协议之上的不同的通信协议的大集合. TCP - 传输控制协议 TCP 用于从应 ...