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来负责完 ...
随机推荐
- SWIFT UITableView的基本用法
import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: ...
- iOS 从手机相册里选取图片
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...
- docker operation method note
docker stop script #!/bin/bash CID_LIST=$(docker ps -q | xargs)if [ "$CID_LIST" = "&q ...
- spring纯java注解式开发(一)
习惯了用XML文件来配置spring,现在开始尝试使用纯java代码来配置spring. 其实,spring的纯java配置,简单来说就是将bean标签的内容通过注解转换成bean对象的过程,没什么神 ...
- HTML中调用servlet的问题(?)
最近在学习servlet.刚开始时,按照案例一行一行的敲代码.不过,出问题了. hello1.html <!DOCTYPE html> <html> <head> ...
- [转]WEB开发者必备的7个JavaScript函数
我记得数年前,只要我们编写JavaScript,都必须用到几个常用的函数,比如,addEventListener 和 attachEvent,并不是为了很超前的技术和功能,只是一些基本的任务,原因是各 ...
- [转] linux中pam模块
一.pam简介 Linux-PAM(linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式. 换句话说,不用(重新编写)重新编译一个包含PAM功能的应用程序,就可以改变它使 ...
- poj: 3094
简单题 #include <iostream> #include <stdio.h> #include <string> #include <stack> ...
- HDU 5000 Clone(离散数学+DP)(2014 ACM/ICPC Asia Regional Anshan Online)
Problem Description After eating food from Chernobyl, DRD got a super power: he could clone himself ...
- codeforces 70D Professor's task(动态二维凸包)
题目链接:http://codeforces.com/contest/70/problem/D Once a walrus professor Plato asked his programming ...