HTTP报文

  1. 报文
a HTTP报文可以分为两大类:请求报文、响应报文
b HTTP报文由三个部分组成:起始行{请求行,响应行}、首部、主体
     b1 起始行和首部就是由行分割的ASCII文本,每行都由CRLF(回车换行符)结束
     b2 有些老程序并非严格以CRLF作为行结束符,好的程序也应接受单个换行符作为行终止符
     b3 首部和主体之间应该包含一个空行符(CRLF)
     b4 主体是一个可选的数据块
     b5 首部总是应以一个空行(CRLF)结束,甚至没有首部和主体部分也应如此。但由于历史原因,很多客户端和服务器都在没有实体的主体部分时,(错误地)省略了最后的CRLF。为了与这些流行但不符合规则的实现进行互通,客户端和服务器都应该接受那些没有最后那个CRLF的报文。
  1. 请求报文
 <method> <request-URL> <version>
 <headers>

 <entity-body>
  1. 响应报文
 <version> <status> <reason-phrase>
 <headers>

 <entity-body>

备注

method,方法,客户端希望服务器对资源执行的动作,如:GET
request-URL,请求URL,URL路径组件的完整URL,如:/index.html
version,版本,报文所使用的HTTP版本,如:HTTP/1.1
header,首部,可以有零个或多个;每个首部都包含一个名字,后面跟着一个冒号(:),然后是一个可选的空格,接着是一个值,最后是一个CRLF;首部是由一个空行(CRLF)结束的,表示了首部列表的结束和实体部分的开始
entity-body,主体,可选数据块。
status,状态码
reason-phrase,原因短语
  1. HTTP常用方法
GET:用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器
POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
PUT:传输文件,报文主体中包含文件内容,保存到对应URI位置。
HEAD:获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
OPTIONS:查询相应URI支持的HTTP方法。
TRACE:对报文进行追踪

GET方法与POST方法的区别

区别一:
      GET重点在从服务器上获取资源;
      POST重点在向服务器发送数据;
区别二:
      GET传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?"连接,多个请求数据间用"&"连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的;
      POST传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;
区别三:
      GET传输的数据量小,因为受URL长度限制,但效率较高;
      POST可以传输大量数据,所以上传文件时只能用POST方式;
区别四:
      GET是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;
      POST较GET安全性较高;
  区别五:  
      GET方式只能支持ASCII字符,向服务器传其它字符可能会乱码。
      POST支持标准字符集,可以正确传递中文字
  1. 状态码分类


    状态码分类.png
  2. 状态码

  100 Continue,继续
  101 Switching Protocols,转换协议
  
  200 OK,正常
  201 Created,已创建
  202 Accepted,已接受
  203 Non-Authoritative Information,非官方信息
  204 No Content,无内容
  205 Reset Content,重置内容
  206 Partial Content,局部内容
  
  300 Multiple Choices,多种选择
  301 Moved Permanently,永久重定向
  302 Found,临时重定向
  303 See Other,查看其它位置
  304 NOT Modified,未修改
  305 Use Proxy,使用代理
  306 (未使用),当前未使用
  307 Temporary Redirect,临时重定向
  
  400 Bad Request,错误请求
  401 Unauthorized,未授权
  402 Payment Required,未使用
  403 Forbidden,禁止访问
  404 Not Found,未找到
  405 Method Not Allowed,方法未允许
  406 Not Acceptable,无法访问
  407 Proxy Authentication Required,代理服务器认证要求
  408 Request Timeout,请求超时
  409 Conflict,冲突
  410 Gone,资源不存在
  411 Length Required,需要数据长度
  412 Precondition Failed,先决条件错误
  413 Request Entity Too Large,请求实体过大
  414 Request URI Too Long,请求URI过长
  415 Unsupported Media Type,不支持的媒体格式
  416 Requested Range Not Satisfiable,请求范围无法满足
  417 Expectation Failed,期望失败

  500 Internal Server Error,内部服务器错误
  501 Not Implemented,未实现
  502 Bad Gateway,网关出错
  503 Service Unavailable,服务无法到达
  504 Gateway Timeout,网关超时
  505 HTTP Version Not Supported,不支持的 HTTP 版本

备注

302、303、307状态码交叉
  HTTP/1.0规定客户端拿到302重定向后,向Location中的URL发送一个GET请求(哪怕原始请求是POST请求)。后来在HTTP/1.1中被扩展成了303(POST转GET)和307(可以发POST)
  1. 首部
A 应用程序可以随意发明自己所用的首部,只是应符合首部的语法规范。
B 首部可以大致分为以下几类:
     通用首部,可出现于请求报文、响应报文
     请求首部,
     响应首部,
     实体首部,
     扩展首部,规范中没有定义的新首部                                                
  1. 常见HTTP首部字段
a 通用首部字段(请求报文与响应报文都会使用的首部字段)
      Date:创建报文时间
      Connection:连接的管理
      Cache-Control:缓存的控制
      Transfer-Encoding:报文主体的传输编码方式
b 请求首部字段(请求报文会使用的首部字段)
      Host:请求资源所在服务器
      Accept:可处理的媒体类型
      Accept-Charset:可接收的字符集
      Accept-Encoding:可接受的内容编码
      Accept-Language:可接受的自然语言
c 响应首部字段(响应报文会使用的首部字段)
      Accept-Ranges:可接受的字节范围
      Location:令客户端重新定向到的URL
      URIServer:HTTP服务器的安装信息
d 实体首部字段(请求报文与响应报文的的实体部分使用的首部字段)
      Allow:资源可支持的HTTP方法
      Content-Type:实体主体的类型
      Content-Encoding:实体主体适用的编码方式
      Content-Language:实体主体的自然语言
      Content-Length:实体主体的的字节数
      Content-Range:实体主体的位置范围,一般用于发出部分请求时使用

HTTP常见问题汇总
HTTP状态码详解
HTTP状态码大全
HTTP状态码301、302、303、307
HTTP状态码302、303和307的故事

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • 本文摘自《HTTP权威指南》 看完这篇文章你会理解以下概念:报文是如何流动的HTTP报文的三个组成部分(起始行、首...
    廖少少阅读 1,524评论 0 7
  • 原创文章转载请注明出处,谢谢 报文流 HTTP报文是在HTTP应用程序之间发送的数据块,HTTP通过inbound...
    北辰明阅读 654评论 0 5
  • 通过本文可以了解编写自己的 HTTP 应用程序所需掌握的大部分内容。具体来说,你会理解下列概念: 报文是如何流动的...
    luffier阅读 782评论 0 1
  • -1- 世间万事万物,都不可能达到极致,恰如高等数学中的极限,只能无限接近,而不可能完全抵达。因为,极限是一个相对...
    蒋小志jxz阅读 349评论 1 2
  • 温热的水是无声的, 雾气朦胧了眼睛。 细密的雨是无色的, 霓虹彩印了街景。 热闹一场的朋友来了又走, 空了一场的寂...
    Felicia信笺阅读 163评论 0 0