博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTP请求和响应1:概述
阅读量:6216 次
发布时间:2019-06-21

本文共 1840 字,大约阅读时间需要 6 分钟。

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

报文的基本结构

HTTP的请求和响应报文都由三个部分组成:对报文进行描写叙述的起始行(start line)、包括属性的首部(header)块、以及可选的包括数据的主体(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.1Accept: text/*Host: www.joes-hardware.com

响应报文:

HTTP/1.1 200 OKContent-type: text/plainContent-length: 19Hi! 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协议使用protobuf进行前后端交互
查看>>
bash腳本編程之三 条件判断及算数运算
查看>>
php cookie
查看>>
linux下redis安装
查看>>
弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言
查看>>
JavaScript 数据类型
查看>>
量子通信和大数据最有市场突破前景
查看>>
StringBuilder用法小结
查看>>
对‘初学者应该选择哪种编程语言’的回答——计算机达人成长之路(38)
查看>>
如何申请开通微信多客服功能
查看>>
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>
非监督学习算法:异常检测
查看>>
App开发中甲乙方冲突会闹出啥后果?H5 APP 开发可以改变现状吗
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
Myeclipes快捷键
查看>>
癌细胞最偏爱10个字,你却每天都在喂养“它”!
查看>>
我的友情链接
查看>>
ToRPC:一个双向RPC的Python实现
查看>>