http协议了解
在web应用中,服务器把网页的HTML代码发送给浏览器,让浏览器显示出来,浏览器和服务器之间的传输协议就是HTTP协议。HTTP是在网络上传输HTML的协议,用于浏览器和服务器之间的通信。
一个网页打开的流程是浏览器读取服务器发送的HTML源码后,解析HTML,显示页面,然后根据HTML中的各个链接,再发送请求到服务器,拿到相应图片视频js脚本等资源,最后显示出一个完整的页面。
http请求的流程:
1.浏览器向服务器发送http请求
方法:有post(请求支援并附带数据,可能修改服务器上的资源)\get(仅请求资源)\PUT(增加数据)\DELETE(删除数据);
路径:/full/url/path;
域名:由host指定,如 host:www.sina.com.cn
当请求方法为post时,请求还包括一个body,包含用户数据。
2.服务器向浏览器返回HTTP相应
响应代码:
200:成功
3XX:重定向
4XX:客户端发送的请求有错误
5XX:服务器端处理时发生了错误
响应类型:由Content-Type指定。
通常服务器返回的HTTP响应会携带内容,即一个body,如HTML源码。
3.浏览器继续向服务器发送请求,就继续1和2的步骤。
注意:HTTP协议采用了简单的请求-响应的模式,一个HTTP请求只处理一个资源。一个网页中的请求可以是不同的服务器,一个站点可以链接到其他站点。比如图片可以链接于不同的网站。
HTTP格式
HTTP请求和响应都遵循相同的格式,包含Header和Body两个部分。Body可选。
HTTP GET请求格式:(Header一行一个,换行符 \r\n)
GET /path HTTP/1.1 //例:GET /books/?sex=man&name=professional HTTP/1.1
Header1:Value1
Header2:Value2
Header3:Value3 //GET可提交的数据量受到URL长度的限制,这个限制不是HTTP协议限制的,是浏览器及服务器限制的。
HTTP POST请求格式:(连续两个换行符时,header部分结束,后面全部为body)
POST /path HTTP/1.1
Header1:Value1
Header2:Value2
Header3:Value3
body data…… //HTTP协议对POST的大小没有限制,但处于安全考虑,服务器会在实现时做一定限制。
HTTP响应格式:
200 ok
Header1:Value1
Header2:Value2
Header3:Value3
body data……
注意:body的数据类型由Content-Type来决定。网页时,body是文本,图片时,body是二进制数据。Content-Encoding存在时,body数据被压缩,常见格式是gzip,此时需解压缩。
条件GET使用的时机:
在客户端之前已经访问过某网站,并打算再次访问该网站的时候。
当再次访问这个网站时候,浏览器向服务器发送请求询问是否在上次询问后更改了页面,服务器根据请求判断响应文件是否有更新,更新了则返回正常响应,没有更新则则返回304 Not Modefied响应,告诉浏览器使用已缓存的上次获取文件。
(本文参考地址:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832653051fd44e44e4f9e4ed08f3e5a5ab550358d000)
http协议了解的更多相关文章
- HTTP协议系列(1)
一.为什么学习Http协议 首先明白我们为什么学习HTTP协议,也就是说明白HTTP协议的作用.HTTP协议是用于客户端与服务器之间的通讯.明白了HTTP协议的作用也就知道了为什么要学习H ...
- 重温Http协议--请求报文和响应报文
http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...
- 协议森林17 我和你的悄悄话 (SSL/TLS协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...
- 协议森林16 小美的桌号(DHCP协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址.DNS域名服务器地 ...
- 简约之美Jodd-http--深入源码理解http协议
Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! jodd-http是一个轻巧的HTTP客户端.现在我们以一个简单的示例从源码层看看是如何实现的? Http ...
- 【JavaScript】javascript中伪协议(javascript:)使用探讨
javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...
- SNMP简单网络管理协议
声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...
- 海鑫智圣:物联网漫谈之MQTT协议
什么是MQTT协议 MQTT(消息队列遥测传输协议)是IBM在1999年专门针对物联网等应用场景来制订的轻量级双向消息传输协议,它主要是为了解决物联网上使用到的设备的互相通信的问题,以及这些设备与后端 ...
- linux-图形化远程管理协议
远程管理控制方式: RDP(remote desktop protocol)协议: telnet: SSH(Secure Shell): RFB(Remote FrameBuffer)协议(图形化远程 ...
- RTP与RTCP协议介绍(转载)
RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...
随机推荐
- cacti批量添加主机脚本
#!/bin/bash ##cacti批量脚本位置 device=/var/www/html/cacti/cli/add_device.php graphs=/var/www/html/cacti/c ...
- 设置GPnP profile文件中asm spfile的位置
登录asmcmd asmcmd> spset <location-绝对路径> 示例: ASMCMD> spset +DATA/asm/asmparameterfile/asms ...
- Java基础之在窗口中绘图——使用模型/视图体系结构在视图中绘图(Sketcher 1 drawing a 3D rectangle)
控制台程序. 在模型中表示数据视图的类用来显示草图并处理用户的交互操作,所以这种类把显示方法和草图控制器合并在一起.不专用于某个视图的通用GUI创建和操作在SketcherFrame类中处理. 模型对 ...
- Java基础之创建窗口——使用BoxLayout管理器(TryBoxLayout4)
控制台程序. javax.swing.BoxLayout类定义的布局管理器在单行或单列中布局组件.创建BoxLayout对象时,需要指定是在行还是列中布局组件. 对于行,组件是从左到右地添加:对于列, ...
- 来自“Java中国”优秀的程序员不会觉得累成狗是一种荣耀
分享下“https://java-china.org/topic/28“,也算是对自己的一种告诫吧. 原文:Sleep deprivation is not a badge of honor 先介绍一 ...
- replication_slot and PostgreSQL Replication
主库IP:192.168.230.128 备库IP:192.168.230.129 PostgreSQL版本: 主备机PostgreSQL源码包均位于/opt/soft_bak OS:CentOS5 ...
- VS2012窗口及编辑文本框背景颜色变黑
1.工具->选项 2.环境->常规->深色
- 转:Tomcat配置
一.修改Tomcat端口号步骤: 1.找到Tomcat目录下的conf文件夹 2.进入conf文件夹里面找到server.xml文件 3.打开server.xml文件 4.在server.xml文件里 ...
- 在EditText前面添加一个搜索的小图片
1,这是EditText中的一个小的属性 代码: android:drawableLeft="@drawable/searchico" 效果图如下:
- SparkSQL基础应用(1.3.1)
一.概述 从1.3版本开始Spark SQL不再是测试版本,之前使用的SchemaRDD重命名为DataFrame,统一了Java和ScalaAPI. SparkSQL是Spark框架中处理结构化数据 ...