HTTP协议研究一(基础协议及请求)
来源:互联网 发布:南京地铁网络问政 编辑:程序博客网 时间:2024/06/07 15:48
为什么要单独写HTTP协议,看看下面的等价式就明白了
webservice <==> http + xml
rest <==> http + json
各种API接口 <==> http + json/xml
上面三种常用的网络服务方式,都与HTTP息息相关,那么今天就浅显的说一说HTTP协议,不对的地方,欢迎评论指出。
1. HTTP协议的简单理解
什么是协议,双方都遵守的一个共同的约定规范,这就是协议。
HTTP协议就是按照一定的规则向服务器发送数据或者请求数据,服务器按照约定的规则返回数据。
2. HTTP请求响应信息
(1)请求信息包括三个部分
a. 请求行 b. 请求头 空一行(标志请求头结束)c 请求体
请求行包括: 请求方式 GET POST HEAD PUT DELETE TRACE OPTIONS
请求资源路径
请求协议 HTTP/1.1
请求头:Host: 主机地址
Content-type: 请求信息类型
Content-length:请求体信息长度
Content-Encoding:请求体信息的编码
Accept:指定那些媒体类型是被接受的
Accept-Charset: 哪些字符集的响应对请求端是可接受的
Accept-Encoding: 限定服务端返回给客户端的内容编码
Accept-Language:限定服务端返回给客户端的自然语言
Authoriation:授权
If-Match: 验证
If-Modified-Since: 验证过去一段时间是否修改
If-None-Match: 验证ETag
Referer: 指定请求URI来源地资源URI (防盗链)
User-Agent: 发起请求的用户代理信息
其他请参考文档:HTTP协议 最新RFC文档 中文版 第5节和第14节
请求体:就是要发送的请求数据了
(2)响应信息包括三个部分
a. 响应行 b. 响应头 空行 c. 响应主体
响应行包括:协议版本: HTTP/1.1
状态码 : 200
状态文字: ok
响应头包括:Age:发送者对响应产生时刻后经过的时间估计
Etag:请求对应变量的当前实体标签
Location:201 请求建立新资源的位置 3XX 重定向新的URI
Proxy-Autenticate:包含在407响应里 由 challenge(授权模式)
和parameters(应用于请求的URI代理)组成
Date:响应日期时间
Content-Type:响应内容类型
Transfer-Encoding:传输编码 如分块传输 chunked
Connection:连接状态 如 keep-alive 保持、close 关闭
Server:用于处理请求的服务器响应信息
Vary:告诉用户代理选择表现形式的标准
WWW-Authenticate:包含在401响应头信息中没有被授权
其他请参考文档:HTTP协议 最新RFC文档 中文版 第6节和第14节
响应体:就是返回的数据了
3. 常用的请求方式
请求方式 请求说明GET 一般用于查询类的请求POST一般用于表单提交 类的请求
HEAD
与GET类似,不同的是,GET返回响应信息体,HEAD则不会返回,常用于检查某个链接是否访问正常,或者某个资源是否存在却不需要加载该资源信息PUT 如果一个方法被执行多次,产生的效果是一样的,使用此方法,否则使用post TRACE 比如使用代理上网 访问 news.qq.com 使用此方法将返回最终的请求内容,然后根据最初的内容进行对比 看是否有人篡改
OPTIONS 返回该URI 下能使用的所有请求方式
4. 常用的状态码
状态码
说明
1XX
接收到消息,继续处理
2XX
接收并成功返回处理
3XX
重定向 301 永久重定向 302 临时重定向
304 缓存重定向(未修改 读缓存Etag 和 Last Modified 配合)如图片
第一次请求 在响应头里 Etag 和 Last-Modified 状态为 200
第二次请求 在请求头里If-None-Match 和 If-Modified-Since 状态为 304
307 带参数的重定向 比如form提交时跳转到新的URI继续处理数据
4XX
客户端错误 比如 403 禁止访问 404 页面未找到
5XX
服务器错误 500 服务器内部错误 代码问题 502 坏网关 503 服务器暂时不可用
504 超时
5. 基本的请求示例
# telnet 192.168.1.25 80
GET /test HTTP/1.1
Host:www.huihaokeji.cn
Content-Length:24
username=zhangsan&age=23
HTTP/1.1 200 OK
Server: nginx/1.10.1
Date: Thu, 09 Feb 2017 11:41:16 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.6.23
zhangsan is 23
- HTTP协议研究一(基础协议及请求)
- HTTP协议基础(一)
- HTTP协议基础(一)
- 略说http协议(一:http历史及http基础)
- SpringMVC之http协议基础(一)
- HTTP协议学习篇(一)—http请求
- HTTP协议(一)
- http协议(一)
- HTTP协议(一)
- HTTP协议(一)
- HTTP协议(一)
- HTTP协议(一)
- Http协议(一)
- HTTP协议概述及请求响应入门
- HTTP协议及请求/响应模型
- Http协议及如何请求 快速入门
- http协议及请求响应报文
- HTTP协议基础(一):简单的HTTP协议
- 279. Perfect Squares
- 76. Minimum Window Substring
- PAT BASIC LEVEL 1048. 数字加密(20)
- (19)Spring Boot 添加JSP支持【从零开始学Spring Boot】
- Win7+XE6编译的程序在Xp上Label显示不出
- HTTP协议研究一(基础协议及请求)
- 02.09 选项卡 及自定义滚动条
- PAT BASIC LEVEL 1049. 数列的片段和(20)
- 分页查询所需要使用到的泛型类
- AngulerJS学习(三) 路由
- 内功心法 -- java.util.ArrayList<E> (1)
- PHP预定义接口之 ArrayAccess
- Android studio更新问题
- Codeforces Round #396(Div. 2)A. Mahmoud and Longest Uncommon Subsequence【水题】