HTTP的报文分为请求报文和响应报文,打开一个web页面后,浏览器将发起一个HTTP请求报文。HTTPserver收到请求后将回送一个响应报文。

报文的基本结构

HTTP的请求和响应报文都由三个部分组成:对报文进行描写叙述的起始行(start line)、包括属性的首部(header)块、以及可选的包括数据的主体(body)部分。

请求报文和响应报文在语法上有些区别,以下是请求报文的格式:

<method> <request-URL> <version>
<headers> <entity-body>

以下是响应报文的格式:

<version> <status> <reason-phrase>
<headers> <entity-body>

1)方法(method)

client希望server对资源运行的动作。

2)请求URL(request-URL)

命名了所请求资源。或者URL路径组件的完整URL。

3)版本号(ersion)

报文所使用的HTTP版本号,格式为:

 HTTP/<major>.<minor>

眼下使用的是1.1版本号。

4)状态码(status)

描写叙述了请求过程中所发生的情况。

5)原因短语(reason-phrase)

状态码的可读版本号,仅仅对人类有意义。

6)首部(header)

HTTP/1.1要求有效的请求或响应报文中必须包括特定的首部。每一个首部都包括一个名字。后面跟着一个冒号(:),然后是一个可选的空格,然后是一个值,最后是一个换行(CRLF)。首部由一个空行结束。

7)实体(entity-body)

包括由随意数据组成的数据框,报文能够不包括实体部分。

以下看一个详细的样例。请求报文:

GET /test/hi-there.txt HTTP/1.1
Accept: text/*
Host: www.joes-hardware.com

响应报文:

HTTP/1.1 200 OK
Content-type: text/plain
Content-length: 19 Hi! I'm a message!

方法

经常使用的HTTP方法包含:

 GET:从server获取一份文档

 HEAD:仅仅从server获取文档的首部

 POST:向server发送须要处理的数据

 PUT:将请求的主体部分存储在server上

 TRACE:对可能经过代理server传送到server上去的报文进行跟踪

 OPTIONS:决定能够在server上运行哪些方法

 DELETE:从server上删除一份文档

注意并非每一个server都实现了全部的方法。

状态码

状态码用于告诉client,发生了什么事情,状态码的分类例如以下:

 100~199:信息提示

 200~299:成功

 300~399:重定向

 400~499:client错误

 500~599:server错误

以下列举了一些最常见的状态码:

200 OK:成功。请求的全部数据都在响应主体中

 401 Unauthorized:须要输入username和password

 404 Not Found:server无法找到所请求URL相应的资源

首部

首部是一些名/值对的列表。向请求和响应报文中加入一些附加信息。

HTTP规范定义了几种首部字段,应用程序也能够任意发明自己所用的首部。HTTP首部能够分为下面几类:

 1)通用首部;

 --既能够出如今请求报文中。也能够出如今响应报文中

 2)请求首部;

 3)响应首部;

 4)实体首部;

 --描写叙述主体的长度和内容。或者资源自身

 5)扩展首部。

 --规范中未定义的新首部

经常使用的首部例如以下:

 Date:Tue,3Oct 1997 02:16:03 GMT ------server产生响应的日期

 Content-length:15040 ------实体的主体部分包括了15040字节的数据

 Content-type:image/gif ------实体的主体部分是一个GIF图片

 Accept:image/gif,image/jpeg,text/html ------client能够接收GIF图片和JPEG图片以及HTML

长的首部行能够分为多行,提高可读性。多出来的每行前面要有一个空格或制表符(tab),如:

 Server: Test Server

  Version 10 ------以一个空格或者制表符開始

HTTP请求和响应1:概述的更多相关文章

  1. HTTP要点概述:三,客户端和服务器,请求和响应

    一,客户端和服务器: HTTP协议主要用于客户端和服务器之间的通信. 1,客户端(client):请求访问资源的一端.(知道为啥用C表示客户端了吧) 2,服务器(server):提供资源响应的一端. ...

  2. Django底层剖析之一次请求到响应的整个流程

    As we all know,所有的Web应用,其本质上其实就是一个socket服务端,而用户的浏览器就是一个socket客户端. #!/usr/bin/env python #coding:utf- ...

  3. VUE 数据请求和响应(axios)

    1. 概述 1.1 简介 axios是一个基于Promise(本机支持ES6 Promise实现) 的HTTP库,用于浏览器和 nodejs 的 HTTP 客户端.具有以下特征: 从浏览器中创建 XM ...

  4. Ajax 中的高级请求和响应

    一.概述 在本文中,重点介绍这个请求对象的 3 个关键部分的内容: 1.HTTP 就绪状态 2.HTTP 状态代码 3.可以生成的请求类型 这三部分内容都是在构造一个请求时所要考虑的因素:但是介绍这些 ...

  5. 初入网络系列笔记(4)HTTP请求和响应

    一.借鉴说明,本博文借鉴以下博文 1.starok,HTTP必知必会,http://www.cnblogs.com/starstone/p/4890409.html 2.CareySon,HTTP协议 ...

  6. http协议(二)请求和响应报文的构成

    http协议用于客户端和服务器之间的通信,请求访问资源的一方称为客户端,而提供资源响应的一方称为服务器端. 下面就是客户端和服务端之间简单的通信过程 PS:请求必须从客户端建立通信,服务端没收到请求之 ...

  7. iOS开发——网络篇——HTTP/NSURLConnection(请求、响应)、http响应状态码大全

    一.网络基础 1.基本概念> 为什么要学习网络编程在移动互联网时代,移动应用的特征有几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图只有通过网络跟外界进行数据交互.数据更新, ...

  8. struts2基础——请求与响应、获取web资源

    一.请求与响应 Action1.含义:(1) struts.xml 中的 action 元素,也指 from 表单的 action 属性,总之代表一个 struts2 请求.(2) 用于处理 Stru ...

  9. 浏览器-Tomcat服务器-请求与响应

    浏览器访问服务器,本质就是请求资源. 比如请求静态资源:index.html,我们在浏览器地址栏输入:www.a.com/index.html,浏览器为了支持HTTP协议,发送的数据必须符合HTTP协 ...

随机推荐

  1. spark 从RDD createDataFrame 的坑

    Scala: import org.apache.spark.ml.linalg.Vectors val data = Seq( (7, Vectors.dense(0.0, 0.0, 18.0, 1 ...

  2. POJ 1141 括号匹配 DP

    黑书原题 区间DP,递归输出 不看Discuss毁一生 (woc还真有空串的情况啊) //By SiriusRen #include <cstdio> #include <cstri ...

  3. java中移位操作

    /** * * @author SunRain *2013-10-14 8:09:50 *在最后一个移位运算中,结果没有直接付给b,而是直接打印出来,所以结果是正确的, *其他的是会被先转换成int型 ...

  4. UVa 1599 Ideal Path【BFS】

    题意:给出n个点,m条边,每条边上涂有一个颜色,求从节点1到节点n的最短路径,如果最短路径有多条,要求经过的边上的颜色的字典序最小 紫书的思路:第一次从终点bfs,求出各个节点到终点的最短距离, 第二 ...

  5. ora_tool

    #!/bin/ksh # # Copyright (c) 1998, 2002, Oracle Corporation.  All rights reserved. #   version() {   ...

  6. IBM小机的开机步骤

    IBM小机的开机步骤 以下以 IBM P570 小机包含静态逻辑分区(LPAR) 的 Oracle9i RAC环境为例进行讨论 1. 设备(小机.存储.光交......)加电 2. 启动存储 3. 启 ...

  7. 每位 Ubuntu 18.04 用户都应该知道的快捷键

    作者: Abhishek Prakash 译者: LCTT XiatianSummer 了解快捷键能够提升您的生产力.这里有一些实用的 Ubuntu 快捷键助您像专业人士一样使用 Ubuntu. 您可 ...

  8. [POI2008]POD-Subdivision of Kingdom(搜索+状压)

    题意 给定一个n个点的无向图,要求将点集分成大小相等的两个子集,使两个子集之间的边数最少 (n<=26) 题解 一开始想了半天DP发现不会,去看题解全是搜索. 所以发现C(1326)可以过我就写 ...

  9. 常见bug分析

    变量类型不匹配,形参和实参类型不匹配,隐式类型转换,变量类型赋值不匹配, 工具不熟悉,导致逻辑错误,查看代码,测试驱动开发,完整的测试用例,覆盖所有分支, 变量超出范围,对于大的数据要特别注意, 工具 ...

  10. NodeJS代码调试

    1.在Chrome打开chrome://flags/#enable-devtools-experiments 2.激活Developer Tools experiments 3.重启Chrome 4. ...