HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间数据交换的过程。

1.Http1.0和1.1

Http1.0:请求一次,连接自动断开。

Http1.1:一次连接,可以发起多次请求。

2.在windows中使用telnet发起Http请求

telnet localhost 8080   //连上服务器

GET /abc/1.html HTTP/1.1 // 编写HTTP请求

Host: // 输入服务器名

3.HTTP请求的格式

【一个请求行】换行

【若干个请求头】换行

换行

【post消息】

例如:

GET /books/abc.html HTTP/1.1

Accept:image/webp,image/*,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:uuid_tt_dd=1603386812225897869_20161020; __message_sys_msg_id=0; __message_gu_msg_id=0; __message_cnel_msg_id=0; __message_district_code=000000; __message_in_school=0; dc_tos=ofbqa0; dc_session_id=1476929736226
Host:dc.csdn.net
Referer:http://www.csdn.net/article/2014-09-17/2821721
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36

// 说明

//第一行是请求行 格式为:【请求方式  资源URL  HTTP版本号】

// 请求方式共有7种,常用的是GET和POST两种,GET常用来从服务器得到信息,POST主要用来向服务器提交信息

// GET请求提交给服务器的信息被写在URL的“?“后面,使用“&”分隔多个键值对,不具有保密性,通常该信息容量最大不超过1K

// POST请求发给服务器端的信息无容量限制,该信息被放在请求体里发给服务器。POST请求通常通过form表单提交。

//第二行开始是多条请求头信息

2.常用请求头

Accept:客户支持的数据类型,全支持是"*/*",部分支持比如"text/html image"表示支持HTML和图片

Accept-Charset:客户机采用的编码方式

Accept-Language:客户机语言环境,用来提示服务器进行正确的国际化,如"zh-cn"表示中文中国地区

Accept-Encoding:客户端支持的压缩格式,服务器端可根据该信息,将响应内容压缩至该格式进行传输

Host:请求哪个主机的资源

If-Modified-Since:如果服务器端相应资源的最后修改日期比这个日期新,就发送新的相应,否则就读取客户机浏览器缓存

Referer:表明当前的请求是从哪个页面发送出来的,用来支持服务器端做防盗链工作。

User-Agent:客户机的软件环境,如浏览器品牌及版本,操作系统品牌及版本等

Cookie:Cookie信息

Connection:用来告诉服务器端,当响应完成以后连接是关闭还是保持。常用的值两个:close/Keep-Alive

Date:客户机的时间

5.响应的格式

【一行状态行】换行

【若干个响应头】换行

换行

【实体内容】

举例:

HTTP/1.1 200 OK

Access-Control-Allow-Credentials:true
Access-Control-Allow-Methods:GET,POST
Access-Control-Allow-Origin:http://so.csdn.net
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/plain;charset=UTF-8
Date:Thu, 20 Oct 2016 02:15:38 GMT
Expires:Thu, 01-Jan-1970 00:00:00 GMT
Keep-Alive:timeout=20
Server:openresty
Set-Cookie:dc_session_id=1476929736226;Path=/;Domain=csdn.net;Expires=Thu, 20-Oct-2016 02:45:38 GMT
Transfer-Encoding:chunked
Vary:Accept-Encoding

//说明

// 第一行是状态行  格式为【HTTP版本号 状态码 原因叙述】

// 状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数,响应状态码分为5类

// 100~199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程。不常见。

// 200~299:表示成功接收请求并已完成整个处理过程,常用200

// 300~399:为完成请求,客户机需要继续细化请求。例如:请求的资源已经移动到一个新地址。常用302、304和307

// 302:请求被服务器重定向到新的URL,与响应头中的Location头配合使用

// 307和304:服务器要求客户机去拿缓存

// 400~499:客户端的请求有错误。常用404、403。404表示请求的资源不存在。403表示用户没有访问该资源的权限。

// 500~599:服务器端有错误产生,常用500。

6.常用响应头

Location:客户发来的请求,服务器端告诉客户端,你要的东西我没有,你可以去找某某,这个过程术语叫做请求重定向,而Location就是这个某某。

Server:服务器的类型

Content-Encoding:数据压缩格式

Content-Length:数据长度

Content-type:数据类型

Last-Modified:资源缓存时间

Refresh:连命令浏览器多长时间刷新一次

Content-Disposition:是否以下载的方式打开资源

Transfer-Encoding:数据传送格式

ETag:缓存内容的头

Expires:缓存过期时间

Cache-Control:no-cache是否要缓存

Pragma:no-cache是否需要缓存

Http 1.1协议的更多相关文章

  1. HTTP协议系列(1)

    一.为什么学习Http协议       首先明白我们为什么学习HTTP协议,也就是说明白HTTP协议的作用.HTTP协议是用于客户端与服务器之间的通讯.明白了HTTP协议的作用也就知道了为什么要学习H ...

  2. 重温Http协议--请求报文和响应报文

    http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...

  3. 协议森林17 我和你的悄悄话 (SSL/TLS协议)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...

  4. 协议森林16 小美的桌号(DHCP协议)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址.DNS域名服务器地 ...

  5. 简约之美Jodd-http--深入源码理解http协议

    Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! jodd-http是一个轻巧的HTTP客户端.现在我们以一个简单的示例从源码层看看是如何实现的? Http ...

  6. 【JavaScript】javascript中伪协议(javascript:)使用探讨

    javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...

  7. SNMP简单网络管理协议

    声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...

  8. 海鑫智圣:物联网漫谈之MQTT协议

    什么是MQTT协议 MQTT(消息队列遥测传输协议)是IBM在1999年专门针对物联网等应用场景来制订的轻量级双向消息传输协议,它主要是为了解决物联网上使用到的设备的互相通信的问题,以及这些设备与后端 ...

  9. linux-图形化远程管理协议

    远程管理控制方式: RDP(remote desktop protocol)协议: telnet: SSH(Secure Shell): RFB(Remote FrameBuffer)协议(图形化远程 ...

  10. RTP与RTCP协议介绍(转载)

    RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...

随机推荐

  1. hadoop2.X使用手册1:通过web端口查看主节点、slave1节点及集群运行状态

    导读内容:1.如何通过web查看hdfs集群状态2.如何通过web查看运行在在主节点master上ResourceManager状态3.如何通过web查看运行在在slave节点NodeManager资 ...

  2. 高手速成android开源项目【导航篇】

    Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一个 ...

  3. 安装 Dubbo 管理控制台

    Dubbo管控台可以对注册到 zookeeper 注册中心的服务或服务消费者进行管理,但管控台是否正常对Dubbo服务没有影响,管控台也不需要高可用,因此可以单节点部署. IP: 192.168.1. ...

  4. PHP基础(一)

    <?php $expression = false; if($expression == true): ?> <p>This will show if the expressi ...

  5. 【地图API】收货地址详解2

    上次讲解的方法是: 在地图中心点添加一个标注,每次拖动地图就获取地图中心点,再把标注的位置设置为地图中心点.可参考教程:http://www.cnblogs.com/milkmap/p/6126424 ...

  6. Android中使用自定义View实现下载进度的显示

    一般有下载功能的应用都会有这样一个场景,需要一个图标来标识不同的状态.之前在公司的项目中写过一个,今天抽空来整理一下. 一般下载都会有这么几种状态:未开始.等待.正在下载.下载结束,当然有时候会有下载 ...

  7. 数据导入读取read.table函数详解,如何读取不规则的数据(fill=T)

    函数 read.table 是读取矩形格子状数据最为便利的方式.因为实际可能遇到的情况比较多,所以预设了一些函数.这些函数调用了 read.table 但改变了它的一些默认参数. 注意,read.ta ...

  8. 那些一目了然的3D地质模型 【转】

    http://www.360doc.com/content/16/0830/09/14719766_586950902.shtml

  9. 中国的 Android:尚未发掘的应用市场?

    作者: Wendy Boswell 本周,中国的搜索引擎公司百度最新公布的一篇报告介绍了中国 Android 用户的移动趋势. 下面是一些有价值的统计数据: 眼下在中国,每天的 Android 活跃用 ...

  10. C# WinForm 技巧十: 开发工具

    一.摘要   为了开发效率就应该为这个框架开发一个配套工具.来生成固定格式的代码.工具界面如下:   二.数据库整理篇   添加表主键 修改表说明 修改表字段说明 生成数据库文档 导出数据库里相同的字 ...