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的更多相关文章

  1. 2017.6.29 java读取.properties配置文件的几种方法

    参考来自:http://www.cnblogs.com/s3189454231s/p/5626557.html 关于路径的解释:http://blog.csdn.net/bluishglc/artic ...

  2. MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)

    本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...

  3. Work 2(演讲类) (2017.06.29)

  4. SpringMvc 这篇文章写得不错 多多学习2017.6.29

    http://www.cnblogs.com/bigdataZJ/p/springmvc1.html  博客园链接

  5. MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)(转)

    本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...

  6. Natural Language Processing, 2017, Mar.29, Weekly Report

    Distributed Representations of Words and Phrases and their Compositionality T Mikolov, I Sutskever, ...

  7. ssm框架整合之Spring4+SpringMVC+Mybaties3之配置文件如何配置及内容解释--可直接拷贝使用--不定时更改之2017/4/29

    经测试,需注意以下几点: 1,controller的自动扫描不能放在applicationContext.xml中,要放在spring-mvc.xml中.同样是<context:componen ...

  8. 2017.11.29 JSP+Servlet 中功能验证码及验证的实现

    源代码如下: validate.jsp <%@ page language="java" import="java.util.*" pageEncodin ...

  9. 2017.10.29 C/C++/C#程序如何打成DLL动态库

    C/C++程序如何打成DLL动态库: **1.在VS中新建main.h,添加如下内容:** extern "C" _declspec(dllexport) int onLoad() ...

  10. 2017.9.29 web网上答题及其自动评测系统

    1. 设计计一个网上答题及其自动评测系统,首先是试题页面的设计及其解答的提交, 其次是当提交解答之后,系统自动评阅并给出结果. 分析:需要两个jsp页面:一个是提交信息的页面,另一个是获取提交信息的页 ...

随机推荐

  1. 性能跃升50%!解密自主研发的金融级分布式关系数据库OceanBase 2.0

    小蚂蚁说: 相信大家对蚂蚁金服自主研发的金融级分布式关系数据库OceanBase的故事不再陌生了.在刚刚过去的2018年天猫双11中,成交额2135亿再次创造了新纪录,而支撑今年双11的支付宝核心链路 ...

  2. hibernate的三种状态和缓存

    hibernate的三种状态: 1.瞬时态:对象里面没有id值,对象与session没有关联 类似,把class类new出来,不存进session 2.持久态:对象里面有id值,对象与session关 ...

  3. 使用bat文件执行sql文件

    test.bat mysql -uroot -p[password] < test.sql pause test.sql CREATE DATABASE IF NOT EXISTS test_d ...

  4. Spring分布式事务实现概览

    分布式事务,一直是实现分布式系统过程中最大的挑战.在只有单个数据源的单服务系统当中,只要这个数据源支持事务,例如大部分关系型数据库,和一些MQ服务,如activeMQ等,我们就可以很容易的实现事务. ...

  5. 力扣(LeetCode) 66. 加一

    给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 1: 输入 ...

  6. 学习笔记52—coverletter

    SCI 论文投稿时需要递送一封 Cover letter.你曾经有没有过这样的经历:刚提笔准备写第一句话就陷入沉思——称呼怎么写?或许有的作者认为直接写 Dear editors 就可以了,不用和老外 ...

  7. 修改Anaconda中的Jupyter Notebook默认工作路径

    这二天,安装了anaconda想更改jupyter的工作路径,在网上找了一下 方式1. 打开Windows的cmd,在cmd中输入jupyter notebook --generate-config如 ...

  8. idataway_前端

    一半架构,一半标准.---纯属个人意见 ----------------------------------------- 基本的插件:(尽量使用iviews) 1.传输图片. 2.下拉框.日期控件. ...

  9. 到达一个数 Reach a Number

    2018-09-24 14:19:58 问题描述: 问题求解: 初看到这个问题,直觉上认为可以通过BFS遍历解空间进行求解,因为本质上来说,这个问题和棋盘上移动马的问题是一类问题,都是可以转化成图的问 ...

  10. MySQL命令行的备份与还原

    备份的语法;  mysqldump -uroot -p shop> 数据库路径 还原的语法:  mysql -uroot -p 具体数据库(shop0609)< 数据库路径