HTTP是Web浏览器与Web服务器之间通信的标准协议,HTTP指明了客户端如何与服务器建立连接,如果从服务器请求数据,服务器如何响应请求,关闭连接。HTTP是使用TCP/IP协议进行传输数据的,也就是传输层利用TCP进行连接,进行可靠连接的。
HTTP客户端向服务器端的请求
建立连接
  一般客户端与服务器端在80端口处建立一个TCP连接;
进行请求
  请求的一般格式: GET /index.html HTTP/1.0
  第一个字段为请求动作类型:
  GET代表请求的操作,表示要求服务器返回资源的表示; 
  HEAD表示只需要文件的首部
  PUT表示向服务器上传资源
  POST主要是向服务器发送表单数据
  第二个字段,标识服务器上所请求的资源的相对URL,必须要以"/"开头,Web浏览器在发送请求的时候会自动加上服务器的主机名。
  第三个字段,客户端理解的协议版本;
  每一个HTTP请求不管是客户端还是服务器端均都要以两个回车换行结束(Java中用\r\n\r\n)
  在发送HTTP请求的时候,可以附加额外的基本信息:key:value
  一个常见的发送HTTP格式(一般服务器最重要的工作就是处理发送格式中的第一行数据):
  GET /index.html HTTP/1.0
  Accept:text/html,text/plain
  User-Agent: Lyn
  Host:www.server.com 这个主要就是指定服务器的名
  
  在向服务器发送HTTP请求中如果有查询字符串,则对于POST和GET有不同的方式。
  POST的动作类型主要是用于有所承诺的动作,GET动作主要用于不承担责任的动作。一般对于表单则是POST,浏览普通页面则是GET
  GET发送查询字符串主要直接将查询字符串附加到URL后面,如下表示:
  GET /index.html/username=Elliotte+Harold&email HTTP/1.0
  POST发送查询字符串的基本格式如下:
  GET /index.html HTTP/1.0
  Accept:text/html,text/plain
  User-Agent: Lyn
  Host:www.server.com
 
  username=Elliotte+Harold&email HTTP/1.0
题外(URL,主要由协议,授权机构,路径,查询字符串和片段标示符表示);
URL使用的字符必须是来自ASCII固定的子集:
  大写字母A-Z  小写字母a-z 数字0-9 标点符号- _ . ! ~ * ` ( ).
对于未包含在这里面的字符,都要转换为字节,以%开头后面加上两个16进制数字
  一般空格编码为+,+编码为%2  
响应请求
  服务器向客户端发送响应,响应一般包括以响应码开头,后面是元数据首部(MIME首部),空行,所请求文档,最后必须也要有两个回车换行。
  基本响应格式如下:
  HTTP/1.1 200 OK
  Date:Mon 15
  Server:Apache/7.0
  Connection:close
  Content-Type:text/html;
  Content-length:107  代表文档的多少个字节,不包含首部字节数

  <html>
  <head><title>Hello</title>
  </head>
  <body>Test</body>
  </html>
HTTP 1.1响应码
200-299之间的响应码表示接受、理解并接受了请求
300-399之间的响应码表示Web浏览器需要转到不同的页面,也就是重定位
400-499之间的响应码指示客户端在某些地方有错误
500-599之间的响应码表示服务器发生了错误。
常见的几个响应码如下:
HTTP/1.0 200 OK 表示响应成功
HTTP/1.0 301 Moved 重定向
HTTP/1.0 Bad Request 客户端向服务器发送的请求格式不正确
HTTP/1.0 Not Found(未找到) 最常见错误,指示服务器没有所请求的页面。
具体响应码列表请见转载的另一篇文章HTTP响应码解析
关闭连接
  HTTP1.0是无记忆功能的,称为无状态协议,即如果客户端重新请求,服务器不会记忆前次的连接请求的连接或结果,当服务器响应完客户端本次连接后,就会自动断掉连接。
  HTTP1.1是状态协议,它可以连接重用,它允许浏览器通过一个连接发送多个不同的请求。

本文出自 “在云端的追梦” 博客,请务必保留此出处http://computerdragon.blog.51cto.com/6235984/1191176

HTTP请求与响应格式解析的更多相关文章

  1. Http请求与响应格式

    原文:http://www.cnblogs.com/z941030/p/4699779.html Http协议对浏览器发出的Request格式以及对Web服务器发出的Response格式有具体的规定. ...

  2. 【计算机网络】HTTP请求和响应格式

    HTTP请求格式:<request-line><headers><blank line>[<request-body>]说明:第一行必须是一个请求行(r ...

  3. HTTP——请求和响应格式

    HTTP请求格式:<request-line><headers><blank line>[<request-body>]说明:第一行必须是一个请求行(r ...

  4. angular学习笔记(二十五)-$http(3)-转换请求和响应格式

    本篇主要讲解$http(config)的config中的tranformRequest项和transformResponse项 1. transformRequest: $http({ transfo ...

  5. [WEB API] CLIENT 指定请求及回应格式(XML/JSON)

    [Web API] Client 指定请求及响应格式(xml/json) Web API 支持的格式请参考 http://www.asp.net/web-api/overview/formats-an ...

  6. Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用

    Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...

  7. 第二章、drf框架 - 请求模块 | 渲染模块 解析模块 | 异常模块 | 响应模块 (详细版)

    目录 drf框架 - 请求模块 | 渲染模块 解析模块 | 异常模块 | 响应模块 Postman接口工具 drf框架 注册rest_framework drf框架风格 drf请求生命周期 请求模块 ...

  8. 3) drf 框架生命周期 请求模块 渲染模块 解析模块 自定义异常模块 响应模块(以及二次封装)

    一.DRF框架 1.安装 pip3 install djangorestframework 2.drf框架规矩的封装风格 按功能封装,drf下按不同功能不同文件,使用不同功能导入不同文件 from r ...

  9. ASP.NET Core 请求/查询/响应参数格式转换(下划线命名)

    业务场景: 在 ASP.NET Core 项目中,所有的代码都是骆驼命名,比如userName, UserName,但对于 WebApi 项目来说,因为业务需要,一些请求.查询和响应参数的格式需要转换 ...

  10. HTTP请求格式和HTTP响应格式

    主要内容: 1.HTTP请求格式 2.HTTP响应格式 一.HTTP请求格式 当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:l   请求方 ...

随机推荐

  1. IDEA maven 项目 如何获取项目离线运行所需的全部依赖( .m2格式)

    背景:maven项目要将整个项目的依赖移植到某无法联网服务器进行测试,需要项目离线运行所需的全部依赖 步骤: 1. 首先需要有项目源码,解压后,使用IDEA Open Project 2. 在Sett ...

  2. fluent python-chap2

    1. 内置序列类型 容器序列: list tuple collections.deque 可以存放不同类型的数据. 存放的是它们所包含的任意类型的对象的引用. 扁平序列: str bytes byte ...

  3. Angular 18+ 高级教程 – Component 组件 の Template Binding Syntax

    前言 这篇介绍一些基本的 Angular 模板语法. 参考 Docs – Understanding binding Render.Event Listening and DOM Manipulati ...

  4. 初步认识uboot

    1. uboot下载地址 ftp://ftp.denx.de/pub/u-boot/

  5. 阿里面试让聊一聊Redis 的内存淘汰(驱逐)策略

    大家好,我是 V 哥,粉丝小A面试阿里,说被问到 Redis 的内存淘汰策略的问题,整理这个笔记给他参考,也分享给大家,如果你遇到这个问题,会怎么回答呢? Redis 的内存淘汰策略是指当Redis的 ...

  6. SXYZ-12天集训

    Day 1(6月25日) 早上四点多钟起床做七点到九点四十的飞机到杭州萧山(空客330) 然后坐一小时车到绍兴一中对面的酒店. 中午曾老师请我们在酒店隔壁吃了一桌家常菜(味道可以),以此庆祝曾老师52 ...

  7. store文件夹的处理,vuex模块化modules

    index文件代码: import Vue from "vue"; import Vuex from "vuex"; // 导入根getters import ...

  8. promise是什么?它有哪些作用?

    promsie是es6新增的特性,用来解决回调地狱的问题(异步深层嵌套问题) : 也叫做期约函数,是js内部的构造函数 ,可以当作一个容器,里面保存着某个未来才会结束的事件,比如异步请求 :

  9. 04 Transformer 中的位置编码的 Pytorch 实现

    1:10 点赞 16:00 我爱你 你爱我 1401 class PositionalEncoding(nn.Module): def __init__(self, dim, dropout, max ...

  10. kubernetes的Deployment

    Deployment 在我们发布容器中的服务时,总共有一下几种方式: 将旧的pod停掉,创建新的pod并发布 创建新的pod,然后将旧的pod停掉 滚动式升级.创建一个新的pod,删除一个旧的pod, ...