浅谈HTTP协议(上)
今天讨论一下HTTP协议。一个做前端的,如果连HTTP协议都不了解,那实在是太不合格了。
首先,什么是HTTP?Hyper Text Transfer Protocol(超文本传输协议),用在浏览器和Web服务器之间传输超文本网页。1991年,由IETF这个团体发布了第一个版本——HTTP/0.9,但它有严重的设计缺陷,只支持“GET”方法,不支持MIME类型,很快的就被HTTP/1.0取代。而1996年发布的这个HTTP/1.0也存活的并不长久,虽然是第一个正式发布的稳定版本。1999年,HTTP/1.1诞生,直到现在一直通用(虽然有HTTP/2.0出现了,但还处于研究阶段,并不完善)。
HTTP/1.1一颁布,有趣了,它新增了三个举足轻重的功能。
1、虚拟主机。以前网页少,一台服务器存一个站点也就无所谓了,可后来随着互联网的飞速发展,发现不行了,而虚拟主机可以让一个Web服务器中可以并存多个站点。
2、持久连接。一次请求完成后,和服务器不马上断开连接,保持一会再断开。具体表现在Connection:keep-alive,后面会提到。
3、代理连接。客户端可以通过代理服务器,间接访问目标服务器。
一、请求方法
开始正题,先来讲讲8个请求方法。
GET:表示客户端想获得服务器上的资源。(无请求主体)
POST:表示客户端想传递数据给服务器。(有请求主体)
PUT:表示客户端想放置文件到服务器。(有请求主体)(在restful架构下使用)
DELETE:表示客户端想删除服务器上的指定文件。(无请求主体)(在restful架构下使用)
HEAD:表示客户端想获得服务器上指定资源的响应头部,不要详细的内容。(无请求主体)
CONNECT:连接测试。(无请求主体)
TRACE:追踪请求路径。(无请求主体)
OPTIONS:决定可以在服务器上执行哪些方法。(无请求主体)
二、请求消息
请求消息就是客户端发给服务器的消息。分为四部分,请求起始行、请求头、CRLF、请求主体。
1、请求起始行(Start line)
首先是请求方法:就是上面说的8个。(后跟空格)
然后是请求URL:请求资源路径。(后跟空格)
最后是协议
2、请求头(Headers)
3、CRLF(回车换行)
4、请求主体(Body)
请求消息中,我们着重来讲讲请求头。它分为4种类型:
请求消息专用头(部分):
1、HOST:主机名(ex:XXX.com)
2、Accept:告诉服务器自己可以响应的内容类型(ex:text/html)
3、Origin:告诉服务器当前请求来自哪个域名(ex:http://127.0.0.1)
4、Referer:告诉服务器当前请求来自哪个页面(ex:http://127.0.0.1/index.html)
5、User-Agent:客户端在告诉服务器自己的类型(ex:Chrome 5.0)
6、Accept-Encoding:浏览器在告诉服务器自己接收的响应数据编码类型(ex:gzip<压缩类型>)
7、Accept-Language:告诉服务器自己可以接收的自然语言(ex:zh-CN<中文>)
请求(响应)消息通用头(部分):
1、Cache-Control:告诉对方如何缓存消息(ex:no-cache/max-age=0)
2、Connnection:告诉对方启用持久连接(ex:keep-alive)
3、Pragma:相当于Cache-Control,只不过是HTTP/1.0版本的(ex:no-cache)
4、Date:消息的创建时间(ex:Sun,11 Dec 2016 00:09:09 GMT)
请求主体描述头(部分):
1、Content-Length:请求主体的长度
2、Content-Type:请求主体的内容类型
Content-Type的取值有三个:
(1)、text/plain 普通文本,未经编码。
(2)、application/x-www-form-urlencoding 经过编码后的数据。
(3)、multipart/form-data 包含上传的文件数据。
浅谈HTTP协议(上)的更多相关文章
- 【转】 浅谈Radius协议
浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报 分类: Radius协议分析(6) 从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...
- 转:浅谈Radius协议 -来自CSDN:http://blog.csdn.net/wangpengqi/article/details/17097221
浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报 分类: Radius协议分析(6) 从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...
- 浅谈HTTP协议(下)
下面来讲响应消息.响应消息也分为响应起始行.响应头部.CRLF.响应主体. 响应起始行包括协议版本.响应状态码.原因短句.这里的重点就是响应状态码,它一共分为5类,状态码准确的说是一个三位数. 1xx ...
- 从日常开发说起,浅谈HTTP协议是做什么的。
引言 HTTP协议作为Web开发的基础一直被大多数人所熟知,不过相信有很多人只知其一不知其二.比如咱们经常用到的session会话机制是如何实现的,可能很多人都说不出来吧.其实session会话就是H ...
- 通过Java代码浅谈HTTP协议
最近刚看了http协议,想写点东西加深一下理解,如果哪儿写错了,请指正. 1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(W ...
- 浅谈HTTP协议
1 HTTP概念 把握三个点: 1 HTTP协议(超文本传输协议) HTTP是一个基于TCP/IP通信协议来传递数据,默认端口80 2 HTTP是无连接(限制每次连接只处理一个请求),无状态的(对于事 ...
- 浅谈HTTP协议与TCP协议
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送议. 主要特点 ...
- 浅谈Http协议是怎么回事?
老实说关于http协议这个概念,见到最多的还是各类招聘信息.在平时的工作中,除了了解一些请求,响应,请求头这些概念外,对于http协议也没有太多的关心.因为貌似对平时的工作没有什么影响,所以在写这篇关 ...
- 浅谈http协议六种请求方法,get、head、put、delete、post、options区别
标准Http协议支持六种请求方法,即: 1.GET 2.POST 3.PUT 4.Delete 5.HEAD 6.Options 但其实我们大部分情况下只用到了GET和POST.如果想设计一个符合RE ...
随机推荐
- MySql注入科普
默认存在的数据库: mysql 需要root权限读取 information_schema 在5以上的版本中存在 测试是否存在注入方法 假:表示查询是错误的 (MySQL 报错/返回页面与原来不同) ...
- MySQL 的 utf8_general_ci 和 utf8_unicode_ci 有什么区别,应如何选择?
一般的解说是 utf8_general_ci 速度较快,utf8_unicode_ci 准确性较好 … 但快在那里,又好在什么地方呢? 首先就其准确性说,这世界上有无数种文字,除了通用的英文使用我们较 ...
- php命名、注释规范
一.注释 1.文件头部模板 /** *这是一个什么文件 * *此文件程序用来做什么的(详细说明,可选.). * @author richard<e421083458@163.com> * ...
- 配置maven仓库
1.安装完,配置好环境变量 mvn -v 检查是否成功 mvn install 会将项目生成的构件安装到本地maven仓库 2.settings.xml文件配置: 1)修改本地仓库位置 maven_h ...
- Git commit 常见用法
Git commit git commit 主要是将用户通过git add命令添加到暂存区里的改动给提交到本地的版本库,关于版本库的构成可以查看我先前的笔记. 每次提交我们都会在本地版本库生成 ...
- 如何保证App外包的最终质量,不延期不烂尾?
选择App外包服务的客户,最害怕的就是App项目延期甚至烂尾.投入了巨大的时间和财富,结果最后App无法上线. 解决这个问题有两个方法:第一,在选择公司前,先了解清楚有关App外包的一切问题,做到心里 ...
- Log4j用法
本篇仅仅是简单介绍了在写一个测试例子时,怎么使用log4j的经验,如果用于生产环境,估计还需要在深入一步去了解更多详细的配置信息. log4j.properties 配置信息: log4j.rootL ...
- linux命令-sftp(模拟ftp服务)和scp(文件异地直接复制)
1)sftp sftp是模拟ftp的服务,使用22端口 针对远方服务器主机 (Server) 之行为 变换目录到 /etc/test 或其他目录 cd /etc/testcd PATH 列出目前所在目 ...
- 设置Ubuntu 14.04右键终端的方法
设置Ubuntu 14.04右键终端的方法如下: 首先要安装一个包,即可在右键里面添加一个"打开终端"的菜单. sudo apt-get install nautilus-open ...
- OBD K线抓包 III
14230 HL激活, 5BPS又称 00 //电平激活 C1 33 F1 81 66 //14230的Enter命令 83 F1 11 C1 EF 8F C4 //回应了,一个命令就回应了... ...