2017-3-29/HTTP协议1
1. 讲讲你对http的理解。
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议,是一个客户端和服务器端请求和应答的标准。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。
用户打开浏览器,在地址栏输入URL、按下回车,到页面输出内容,这一系列的过程都在遵循HTTP协议。
2. http协议包含哪些内容?
HTTP是一个应用层协议,由请求和响应构成。这两种类型的消息由一个起始行、消息报头、请求正文组成。

请求消息包括以下四个部分:
请求行(request line)、请求头部(header)、空行和请求数据。
第一部分:请求行,即第1行。用来说明请求类型,要访问的资源以及所使用的HTTP版本。
GET说明请求类型为GET,/a.html为要访问的资源,该行的最后一部分说明使用的是HTTP1.1版本。
第二部分:请求头部,紧接着请求行之后的部分(图中第2-10行),用来说明服务器要使用的附加信息。
Host:指出请求的目的地。
User-Agent:服务器端和客户端脚本都能访问它,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
第三部分:空行,请求头部后面的空行是必须的,即使第四部分的请求数据为空,也必须有空行。
第四部分:请求数据也叫主体,可以添加任意的其他数据。这个例子的请求数据为空。
响应消息也由四个部分组成:
状态行、消息报头、空行和响应正文。
第一部分:状态行,即第1行。由HTTP协议版本号、状态码、状态消息三部分组成。
HTTP/1.1表明HTTP版本为1.1版本,状态码为304,状态消息为Not Modified。
第二部分:消息报头,图中第2-5行。用来说明客户端要使用的一些附加信息。
第三部分:空行,消息报头后面的空行是必须的。
第四部分:响应正文,服务器返回给客户端的文本信息。
3. 一次http请求,具体的流程是什么?
客户端发送一个请求(Request)给服务器,服务器在接收到这个请求后将生成一个响应(Response)返回给客户端。一次HTTP操作称为一个事务,其工作过程可分为四步:
1)单击某个超链接,客户端与服务器建立连接,HTTP协议开始工作。
2)建立连接后,客户端发送一个请求给服务器。
3)服务器接到请求后,给予相应的响应信息。
4)客户端接收服务器返回的信息并显示在用户的显示屏上,然后客户端与服务器断开连接。
4. http有哪些方法?
GET:请求获取Request-URI所标识的资源。
POST:在Request-URI所标识的资源后附加新的数据。
HEAD:请求获取由Request-URI所标识的资源的响应消息报头。
PUT:请求服务器存储一个资源,并用Request-URI作为其标识。
DELETE:请求服务器删除Request-URI所标识的资源。
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断。
CONNECT:保留将来使用。
OPTIONS:请求查询服务器的性能,或查询与资源相关的选项和需求。
5. post和get的区别&post为什么比get安全?
1)GET是从服务器上获取数据,
POST则是向指定的资源提交要被处理的数据。
注:不论是GET还是POST,都可以向服务器传送数据,只不过传送数据的位置不同;都可以从服务器上获取数据。只不过GET的主要任务是获得数据,但在获得数据之前也可以向服务器提交一些数据;POST的主要任务是提交数据,但在提交数据之后服务器也会向用户端返回一些显示用的数据。
2)GET请求数据按照查询字符串(名称/值对)方式,放置在HTTP请求协议头(headers)中,也就是URL之后,
POST提交的数据则放在实体的主体(request-body)中,按照查询字符串(名称/值对)相对应的方式,传递到所指向URL。
3)GET限制数据集的值必须为ASCII字符,GET提交的数据会以variable=value的形式附加在url之后,以?来分隔URL和数据,以&来分隔参数;如果数据是英文或数字,原样发送,如果数据是中文或其他字符,则进行base64编码,
POST没有数据类型的限制,允许二进制数据。
4)GET方式提交的数据最多只能是1024字节,
POST支持较大数据传输。
注:这里的限制指的是整个URL长度,而不是参数值数据长度。HTTP协议对GET和POST都没有对URL长度进行限制,这个限制是特定的浏览器及服务器出于安全、稳定性等方面的考虑,给URL长度进行了限制。
5)在From提交的时候,如果不指定Method,则默认为GET请求。
6)POST比GET相对安全。
GET所发送的数据是URL的一部分,数据在地址栏上可见。但是如果通过第三方工具比如抓包工具,也能看到POST方式传送的数据,因此POST方式也不是绝对的安全,只是比GET相对安全些。
在语义上(RESTFUL视角),
GET的是获取指定URL上的资源,是读操作。不论对某个资源GET多少次,资源的状态是不会改变的,在这个意义上,我们说GET是安全的(不是被密码学或者数据保护意义上的安全)。因为GET是安全的,所以GET返回的内容可以被浏览器,Cache服务器缓存起来。
POST是可能修改变服务器上的资源的请求,资源的状态可能会发生变化,所以POST是不安全的,每次提交的POST,都会被认为这个操作会修改资源的状态。于是,浏览器在你按下F5(刷新)的时候跳出确认框,缓存服务器不会缓存POST请求返回内容。
简而言之,就是:
GET可以被缓存,POST不能。
GET可收藏为书签,POST不可收藏为书签。
GET请求的URL,参数会被浏览器保留在历史中,POST参数不会。
[参考资料] 关于HTTP协议,一篇就够了 http://www.cnblogs.com/ranyonsue/p/5984001.html
2017-3-29/HTTP协议1的更多相关文章
- 2017.6.29 java读取.properties配置文件的几种方法
参考来自:http://www.cnblogs.com/s3189454231s/p/5626557.html 关于路径的解释:http://blog.csdn.net/bluishglc/artic ...
- MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)
本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...
- Work 2(演讲类) (2017.06.29)
- SpringMvc 这篇文章写得不错 多多学习2017.6.29
http://www.cnblogs.com/bigdataZJ/p/springmvc1.html 博客园链接
- MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)(转)
本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...
- Natural Language Processing, 2017, Mar.29, Weekly Report
Distributed Representations of Words and Phrases and their Compositionality T Mikolov, I Sutskever, ...
- ssm框架整合之Spring4+SpringMVC+Mybaties3之配置文件如何配置及内容解释--可直接拷贝使用--不定时更改之2017/4/29
经测试,需注意以下几点: 1,controller的自动扫描不能放在applicationContext.xml中,要放在spring-mvc.xml中.同样是<context:componen ...
- 2017.11.29 JSP+Servlet 中功能验证码及验证的实现
源代码如下: validate.jsp <%@ page language="java" import="java.util.*" pageEncodin ...
- 2017.10.29 C/C++/C#程序如何打成DLL动态库
C/C++程序如何打成DLL动态库: **1.在VS中新建main.h,添加如下内容:** extern "C" _declspec(dllexport) int onLoad() ...
- 2017.9.29 web网上答题及其自动评测系统
1. 设计计一个网上答题及其自动评测系统,首先是试题页面的设计及其解答的提交, 其次是当提交解答之后,系统自动评阅并给出结果. 分析:需要两个jsp页面:一个是提交信息的页面,另一个是获取提交信息的页 ...
随机推荐
- mybatis配置文件resultMap标签的使用
本文为博主原创,未经允许不得转载: resultMap标签是为了映射select查询出来结果的集合,其主要作用是将实体类中的字段与 数据库表中的字段进行关联映射. 注意:当实体类中的字段与数据库表中的 ...
- Footnotes for tables in latex - 为latex的table加上footnotes
参考: Footnotes for tables in LaTeX Footnote in tabular environment Footnotes for tables in latex - 为l ...
- windows下的安装及使用 python
出处 https://www.cnblogs.com/daysme/ - 2017-12-30 本文只讲在 vscode 中如何运行起 python - 2017-12-30 ## windows下的 ...
- 【三十二】thinkphp之连接数据库、实例化模型
1.连接数据库 Thinlphp内置了抽象数据库访问层,把不同的数据操作封装起来.我们只需要调用公共的DB类进行操作即可.DB类会自动调用相应的数据库驱动来处理. 在应用目录/common/conf/ ...
- vs2013 报错error C1083: 无法打开包括文件:“gl\glew.h”: No such file or directory\
vs报错诸如如无法打开“gl\xxx.h”时, 解决方法: 1.去http://glew.sourceforge.net/下载相关文件,2.在下载下来的文件里找到xxx.h,将其复制到vs的相关目录下 ...
- Spring官网下载各版本jar包
1:浏览器输入官网地址:http://spring.io/projects 2:点击如图树叶页面按钮. 3:点击如图小猫图片按钮. 4:查找downloading spring artifacts ...
- 华硕N55SF 折腾记
家里给老妈用的N55SL是2011年买的.这么多年了,最近一身毛病,最近来回折腾很多次.吐槽记录如下 1不定时花屏.闪屏,然后偶尔硬盘掉盘 (找不到硬盘,开机BIOS里).主要是使用一段时间之后发热, ...
- yum的配置文件介绍
yum 的配置文件分为两部分:main 和repository main 部分定义了全局配置选项,整个yum 配置文件应该只有一个main.常位于/etc/yum.conf 中. reposito ...
- Linux中apt与apt-get命令的区别与解释
2019-01-15 14:35:39 随着 apt install package 命令的使用频率和普遍性逐步超过 apt-get install package,越来越多的其它 Linux 发行版 ...
- [JSP] Action Tags
1.: forward转发请求to another resource (可能是jsp, html,等). 语法: <jsp:forward page="relativeURL | &l ...