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. AWS Data Analytics Fundamentals 官方课程笔记 - Variety, Veracity, Value

    Variety structured data applications include Amazon RDS, Amazon Aurora, MySQL, MariaDB, PostgreSQL, ...

  2. P9032 [COCI2022-2023#1] Neboderi

    题意 给长度为 \(n\) 的数组 \(a\),求长度不小于 \(k\) 的区间 \([l,r]\) 使得 \(\gcd_{i = l}^r a_i \times \sum_{i = l}^r a_i ...

  3. ZEGO 最后一公里网络传输的容灾及优化方案

    作为运维,你是否遇到过一些用户域名解析异常,你是否又遇到过某些区域云商加速节点异常导致业务不可用,此时的你一脸茫然,不知所措?作为运维,你是否被最后一公里问题搞得焦头烂额? 那么今天我们就来探讨一下最 ...

  4. 音视频处理三剑客之 AEC:回声产生原因及回声消除原理

    在上一期课程<音视频开发者进阶 -- 音频要素>中,我们从声音三要素.音频模拟信号的数字化和音频数字信号特征等方面,重新认识了"声音"这个老朋友.今天,我们会进一步聊聊 ...

  5. CCIA数安委等组织发布PIA星级标识名单,合合信息再次通过数据安全领域权威评估

    CCIA数安委等组织发布PIA星级标识名单,合合信息再次通过数据安全领域权威评估   近期,"中国网络安全产业联盟(CCIA)数据安全工作委员会"."数据安全共同体计划( ...

  6. CSS & JS Effect – Image 倒影框

    效果 Step1: HTML 结构 <div class="image"> <img src="./images/img-2.png" /&g ...

  7. .NET常见的几种项目架构模式,你知道几种?(附带使用情况投票)

    前言 项目架构模式在软件开发中扮演着至关重要的角色,它们为开发者提供了一套组织和管理代码的指导原则,以提高软件的可维护性.可扩展性.可重用性和可测试性. 假如你有其他的项目架构模式推荐,欢迎在文末留言 ...

  8. OPENLDAP部署完整版(Linux)附一键式脚本

    (一)环境信息1,系统环境2,域信息(本章节使用)(二)应用部署1,ladp部署1. yum方式安装OpenLDAP服务2.拷贝数据库配置配置文件,并启动服务3.slappasswd生成OpenLDA ...

  9. Sqoop简介安装及使用

    Sqoop简介 sqoop 是 apache 旗下一款"Hadoop 和关系数据库服务器之间传送数据"的工具. 核心的功能有两个: 导入.迁入 导出.迁出 导入数据:MySQL,O ...

  10. C++中指针和数组相关的运算符优先级

    概述 本文深入介绍了与指针和数组相关的运算符优先级,利用代码示例展示了当左结合和右结合运算符同时存在时的结合方式,同时也演示了如何使用()来强制人为指定结合顺序. 指针.数组相关的运算符优先级 下表展 ...