从2019年6月中旬开始学习JAVA已经差不多6个月了,也算是差不多半只脚踏进了JAVA的大门,没有老师带,遇到问题就要自己查百度,搜博客,去给各个大佬私信留言,也不知道看不看的见。

  看了很多大佬的视频,好多都是要写写博客,写写总结。这才写着玩玩,正好对自己学习的一个模块进行总结,跟着传智播客崔希凡老师所讲的来记录的,蛮喜欢这位老师是讲课的方式,一股东北大冰碴子味。O(∩_∩)O哈哈哈~

------------------------------------------------------------------------------------<hr/>分割线,是正文---------------------------------------------------------------------------------------------------------------

  最近刚好学到JAVA Web 的HTTP协议。

  众所周知HTTP就是我们平时上网打开浏览器,输入地址前加的HTTP://。。。。什么的HTTP呢.

  HTTP(HyperText Transfer Protocol,超文本传输协议)是因特网应用上最为流传广泛的一种网络传输协议,所有的www文件必须遵循这个标准。

  http是基于请求/响应模式的,所以分为请求协议和响应协议。 

一、请求协议Request

1. 请求格式:
  - 请求首行
  - 请求头
  - 空行
  - 请求体(或称之为请求正文)

2. 请求方法
  - 常见请求方法有GET和POST
  - 在浏览器地址栏中发送请求,以及点击超链接都是GET请求
  - 提交表单可以发送GET请求,以及POST请求
  - GET请求没有请求体,但空行是存在的
  - POST请求是存在请求体的

3. 使用HttpWatch获取请求信息
  - 请求行:请求方法 请求路径 请求协议及版本,例如:GET /hello/index.jsp HTTP/1.1
  - 请求头:请求头就是一些键值,格式为:头:值,例如:Host:localhost
  - 空行:就是一个空行,用来与请求体分隔
  - 请求体:GET方法没有请求体,POST才有请求体,请求体内容为:参数名=参数值&参数名=参数值,其中参数值为中文,会使用URL编码。

4. 常见请求头
  - Host:请求的服务器主机名
  - User-Agent:客户端浏览器与操作系统相关信息
  - Accept-Encoding:客户端支持的数据压缩格式
  - Connection:客户端支持的连接方式
  - Cookie:客户端发送给服务器的“小甜点”,它服务器寄存在客户端的。如果当前访问的服务器没有在客户端寄存东西,那么就不会存在它!
  - Content-Length:请求体的长度
  - Referer:当前发出请求的地址,例如在浏览器地址栏直接访问服务器,那么没有这个请求头。如果是在www.baidu.com页面上点击链接访问的服务器,那么这个头的值就是www.baidu.com

二、响应协议Response

1. 响应格式:
  - 响应首行
  - 响应头
  - 空行
  - 响应体(或称之为响应正文)

2. 状态码
  响应首行的结构:协议及版本 状态码 状态码说明,例如:HTTP/1.1 200 OK

  - 200:请求成功
  - 302:请求重定向,表示服务器要求浏览器会重新发送一个请求,服务器会发送一个响应头Location,它指向了一个新的URI地址。
  - 304:请求资源没有改变
  - 404:请求资源不存在,属性客户端错误
  - 500:服务器内部错误

302重定向老师举了一个特别好的例子:比如给114客服打电话求警察的电话(其中打电话是一个请求),而114客服给你说了一个电话110(这是一个响应),接着你挂了电话给110打电话(又是一个请求),接着110给你一个响应。

状态码304:表示访问的资源没有改变。

  1. 客户端首次访问服务器的静态资源index.html,服务器会把index.html响应给客户端,而且还会添加一个名为Last-Modified的响应头,它说明了当前index.html的最后修改时间
  2. 客户端收到响应后,会把index.html缓存在客户端上,而且还会把Last-Modified缓存起来。
  3. 客户端第二次请求index.html时,会添加名为If-Modified-Since的请求头,它的值是上次服务器响应头Last-Modified,服务器获取到客户端保存的最后修改时间,以及当前资源的最后修改时间进行比较,如果相同,说明index.html没有改动过,那么服务器不会发送index.html,而是响应状态码304,即通知客户端资源没有改变,你可以使用自己的缓存。

3. 响应头
  - Content-Type:响应正文的MIME类型,例如image/jpeg表示响应正文为jpg图片,例如text/html;charset=utf-8表示响应正文为html,并且编码为utf-8编码。浏览器会通过这一信息来显示响应数据
  - Content-Length:响应正文的长度
  - Set-Cookie:服务器寄存在客户端的“小甜点”,当客户端再次访问服务器时会把这个“小甜点”还给服务器
  - Date:响应时间,可能会有8小时的误差,因为中国的时区问题

--------------------------------------------------------就先写到这里吧,大部分就是老师的总结,我只是温故一下知识。= =-------------------------------------------------------------------------------

Http协议(自己的一些小小的总结,方便日后学习揣摩)的更多相关文章

  1. DHCP协议格式、DHCP服务搭建、DHCP协商交互过程入门学习

    相关学习资料 http://www.rfc-editor.org/rfc/rfc2131.txt http://baike.baidu.com/view/7992.htm?fromtitle=DHCP ...

  2. SMB2 Protocol – 简介(应用层协议主要用于在计算机间共享文件、打印机、串口等)

    SMB2 Protocol – 简介 SMB协议简介: 服务器信息块(SMB)协议是一个应用层协议主要用于在计算机间共享文件.打印机.串口等. 在介绍SMB协议的时候,一般提到使用的端口为139,44 ...

  3. wireshark 抓包分析 TCPIP协议的握手

    wireshark 抓包分析 TCPIP协议的握手 原网址:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html 之前写过一篇 ...

  4. 从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路

    本文原作者阮一峰,作者博客:ruanyifeng.com. 1.引言 HTTP 协议是最重要的互联网基础协议之一,它从最初的仅为浏览网页的目的进化到现在,已经是短连接通信的事实工业标准,最新版本 HT ...

  5. 造轮子 | 怎样设计一个面向协议的 iOS 网络请求库

    近期开源了一个面向协议设计的网络请求库 MBNetwork,基于 Alamofire 和 ObjectMapper 实现,目的是简化业务层的网络请求操作. 须要干些啥 对于大部分 App 而言,业务层 ...

  6. [转] 用协议分析工具学习TCP/IP

    一.前言 目前,网络的速度发展非常快,学习网络的人也越来越多,稍有网络常识的人都知道TCP/IP协议是网络的基础,是Internet的语言,可以说没有TCP/IP协议就没有互联网的今天.目前号称搞网的 ...

  7. swift开发之--Protocol(协议)

    使用object-c语言的同学们肯定对协议都不陌生,但在swift中苹果将protocol这种语法发扬的更加深入和彻底. Swift中的protocol不仅能定义方法还能定义属性,配合extensio ...

  8. RTMP(实时信息传输协议)详解

    RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing) ...

  9. 《TCP/IP详解 卷1:协议》系列分享专栏

    <TCP/IP详解卷1:协议>是一本详细的TCP/IP协议指南,计算机网络历久不衰的经典著作之一. 作者理论联系实际,使读者可以轻松掌握TCP/IP的知识.阅读对象为计算机专业学生.教师以 ...

随机推荐

  1. SpringBoot与数据层

    1.JDBC <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  2. HDU - 5952 Counting Cliques

    Counting Cliques HDU - 5952 OJ-ID: hdu-5952 author:Caution_X date of submission:20191110 tags:dfs,gr ...

  3. WPF TreeView 虚拟化-设置滚动到选中项

    前言 列表滚动到具体的数据项? ListBox提供了简易快捷的滚动定位函数ScrollIntoView. TreeView树状结构列表,则没有此类方法,无法与ListBox一样,直接设置滚动到具体的数 ...

  4. Z从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之二 || 后端项目搭建

    本文梯子 前言 1..net core 框架性能测试 2..net core 执行过程 3.中间件执行过程 4.AOP切面 5.整体框架结构与数据库表UML 一.创建第一个Core 1.SDK 安装 ...

  5. go-爬图片

    go语言爬取图片 注:动态加载出来的爬取不到,或怕取出来图片出错,代码中的网页是可以正常爬取的 package main import ( "fmt" "io" ...

  6. Html5 Canvas动画基础碰撞检测的实现

    在Canvas中进行碰撞检测,大家往往直接采用游戏引擎(Cocos2d-JS.Egret)或物理引擎(Box2D)内置的碰撞检测功能,好奇的你有思考过它们的内部运行机制吗?下面将针对基本的碰撞检测技术 ...

  7. [转]JS将图片转为base64编码

    本文转自:https://blog.csdn.net/DeMonliuhui/article/details/79731359 1.根据img标签获取base64编码/** * * @param im ...

  8. QJsonObject与QString转化封装

    经常使用QT的同学可能会发现有时候需要json字符串和json对象之间的转换,今天他来了,直接上代码: QString InfoBase::JsonToString(const QJsonObject ...

  9. mac环境下Python虚拟环境的安装和配置

    虚拟环境(virtualenv) 安装:在终端输入 pip install virtualenv 如果没安装pip会出现 pip: command not found,此时需要进行 sudo easy ...

  10. 如何为 Automatic Undo Management 调整 UNDO Tablespace 的大小 (Doc ID 262066.1)

    How To Size UNDO Tablespace For Automatic Undo Management (Doc ID 262066.1) APPLIES TO: Oracle Datab ...