HTTP协议基础总结

一、HTTP协议概述

1、B/S网络结构

B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件这种模式统一了客户端,将系统功能实现的核心部分集中到了服务器上,简化了系统的开发、维护和使用,同时也大大简化了客户端的电脑载荷,减轻了系统维护与升级的成本和工作量。

2、HTTP协议概述

  • 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准
  • HTTP是一个客户端与服务器端请求和应答的标准
  • HTTP是网络传输的一种标准、规则

3、HTTP协议的特点

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快
  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记
  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间
  • 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少记忆状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快

二、HTTP协议—URL

1、什么是URL?

  • URL(Uniform Resource Locator)统一资源定位符
  • URL是对从互联网上得到的资源的位置和访问方法的一种简洁的表示方法
  • 格式:protocol://hostname[:port]/directory/filename?name=value#anchor
  • 举例:http://www.itcast.cn/include/news.php?p=5#top

2、URL各部分含义

  • protocol:它告诉浏览器打开文件使用的协议。如:http、ftp、telnet、mailto、file等
  • hostname:指定服务器的主机名称,也可以是IP地址
  • port:指定访问的端口号,默认为80
  • directory:指定访问的资源目录名称
  • filename:指定访问的资源名称
  • ?name=value:指定访问资源时,附带的参数部分
  • anchor:指定访问资源时的锚点名称

三、HTTP协议—请求

1、HTTP请求的构成

http请求由三部分组成,分别是:请求行请求头请求正文

2、HTTP请求行的格式

  • 格式:Method Request-URI HTTP-Version
  • 参数:
    • Method:请求方法,必须大写
    • Request-URI:是一个统一资源标识符(URI)
    • HTTP-Version:表示请求的HTTP协议版本。HTTP/1.0短连接,HTTP/1.1长连接

3、从HTTP角度看GET和POST的区别?

在http协议中,get仅代表向服务器获取数据,post为发送(提交)数据,两者仅仅是含义不同;但是,大部分情况下,浏览器等客户端在实现协议的基础上,为了符合协议中的定义,对get及post做了相应的限制;

数据传输方式及大小方面:
在发送 get 请求时,参数需要写在URL地址后面,并且参数的大小也做了相应限制,浏览器厂商不同,大小限制也不相同;
但POST请求中,一般会在HTML的表单中写入数据,由浏览器自行组织数据格式放入请求体发送,而在ajax技术的实现中,需要将数据放进send方法传递;如果非要说有区别,那也仅仅是大部分情况下,get的数据在请求头,post数据在请求体;

安全性方面:
目前网上流行一种说法是 post相对来说要比get安全一些,其实这是错误的,我们不能愚昧的将眼睛能看到的视为不安全而眼睛看不到的视为安全;
真实的情况是 http 协议中,所有的数据传输方式,不仅仅是get和post ,包括put、delete、push等等,都是明文传输的,也就是说,相对https,http本身就是不安全的;
而两种传输方式在安全性上是没有可比性的;

对于传输数据类型:
网上还有一种说法是post可以做文件上传而get不可以;
对于协议角度来说并不准确,只是浏览器及服务器在实现上没有为get方式实现相应的功能而已;

工具实现协议,工具不能代表协议;

实现可以不遵循协议,但是实现不能修改协议;

面试问题:
http://www.laruence.com/2012/01/10/2469.html

4、HTTP请求头含义

报头名称 含义
User-Agent 用户代理,允许客户端将它的操作系统、浏览器和其它属性告诉服务器
Host 用于指定被请求资源的主机和端口号,它通常从TYYP URL中提取出来
Accept 用于指定客户端接受哪些类型的信息。如:image/gif、text/html、*/*(所有类型)
Accept-Language 指定客户端可以接收的语言类型
Accept-Encoding 指定可接受的内容压缩编码类型
Accept-Charset 用于指定客户端接受的字符集
Cookie 写到服务器端的COOKIE数据
Connection 连接类型。keep-alive(保持激活,短时间不断开,一般为30s),Close(立即断开)
Cache-control 控制缓存。no-cache(不缓存)
Referer 可以记录访问的来源,拥挤访问量,可以用来作防盗链

5、HTTP请求正文

  • GET方式,没有消息体,数据附在URI之后传递到服务器
  • POST方式,有消息体,数据放在消息体中传递到服务器
  • 消息体和消息头之间有一空行,不能省略

POST方式发送的数据,才会有请求正文。

6、哪些HTML标记会自动发送请求?

  • <img>
  • <script>
  • <link>
  • <frame>
  • <iframe>

四、HTTP协议—响应

1、HTTP响应的构成

HTTP响应也是由三个部分组成,分别是:状态行响应头响应正文

2、HTTP响应行的格式

  • 格式:HTTP-Version Status-Code Reason-Phrase
  • 参数:
    • HTTP-Version表示服务器HTTP协议的版本
    • Status-Code表示服务器发回的响应状态代码
    • Reason-Phrase表示状态代码的文本描述

3、HTTP响应状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值

  • 1xx:指示信息--表示请求已接收,继续处理
  • 2xx:成功--表示请求已被成功接收、理解、接受
  • 3xx:重定向--要完成请求必须进行更进一步的操作
  • 4xx:客户端错误--请求有语法错误或请求无法实现
  • 5xx:服务器端错误--服务器未能实现合法的请求

常见HTTP响应状态码含义:

状态码 含义
200 OK。请求已成功
301 永久移动,请求的地址被永久改变。由旧域名重定向到新域名。在服务器实现
302 Move temporarily请求的资源临时从不同的URL响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求
304 Not Modified文档的内容(自上次访问以来或者根据请求的条件)并没有改变
400 Bad Request语义有误,当前请求无法被服务器理解
401 Unauthorized当前请求需要用户验证
403 Forbidden服务器收到请求,但是拒绝提供此服务
404 Not Found请求支援不存在
408 Request Timeou请求超时
500 Internal Server Error服务器发生不可预知的错误
503 Server Unavailable服务器当前不能处理客户端的请求,一段时间后可能恢复正常

4、302状态码演示

302状态码,主要涉及header()函数的refresh和location

//网页跳转
header("location:./abc.html");

5、304状态码演示

304状态码表示文件内容没有改变,不需要再次从服务器下载该数据,直接从缓存读取。例如:图片等。

6、403状态码演示

403状态码:没有给网站的虚拟目录指定访问权限时,将返回403状态码。

7、404状态码演示

404状态码:代表访问的文件没有找到。

8、HTTP响应头含义

一个HTTP响应代表服务器给浏览器回送的数据,同时告诉浏览器应当怎样处理数据。

响应报头名称 含义
Date 告诉浏览器,请求页面的时间
Server 服务器软件信息
Content-Length 回送数据的字节数
Content-Type 回送内容的类型
Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的效果。但是如果同时存在,则被Cache-Control的max-age覆盖
Pragma 缓存控制
Cache-Control 缓存控制
X-Powered-By 版权信息(程序支持)
Keep-Alive 连接类型
Location 响应报头域用于重定向到一个新的位置
Refresh 页面刷新时间
Last-modified 指定服务器上保存内容的最后修订时间
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容