从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. C sharp #006# 委托与事件

    饮水思源:金老师的自学网站 索引 委托(Delegate) Click事件探究 委托(Delegate) “不学会委托(Delegate),等于没学.NET编程!” 例程1-委托类型变量 using ...

  2. 以太坊智能合约开发 Solidity学习

    1. pragma solidity >=0.4.22 <0.6.0;//版本号,头文件 contract BooleanTest { bool _a;//默认返回false int nu ...

  3. 【HNOI 2017】礼物

    Problem Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手环,一个留给自己,一个送给她.每个手环上各有 \(n\) 个装饰物,并且每个装饰物 ...

  4. VMware虚拟机安装centos7

    镜像下载地址:http://www.linuxdown.net/ 在vmware上开始安装CentOS系统,点击菜单新建虚拟机,进入如下图步骤进行操作.   接着进行自定义硬盘操作   最后虚拟机就创 ...

  5. 安全意识第八期丨OMG!发个帖子竟然摊上大事了

    互联网时代,话在网上说.钱在网上花.事在网上办,这早已成为一种习惯,越来越多的人也倾向于通过网络来获取信息. 借助现代信息技术,网络传播者通过即时通讯工具.微博.朋友圈等渠道发布信息,虽然传播起来更便 ...

  6. Burpsuite抓取https数据包

    Burpsuite抓取https包 浏览器代理设置 Burpsuite代理设置 启动Burpsuite,浏览器访问127.0.0.1:8080,点击CA Certificate,下载cacert.de ...

  7. Cesium专栏-空间分析之地形等高线(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  8. Linux:LNMP环境的搭建

    LNMP环境的搭建 安装DNS服务器 安装DNS服务 yum install bind -y DNS的配置 创建正向解析 以创建一个名为"lsy.com"的正向查找区域为例: 第一 ...

  9. Java实战|Tomcat+Servlet+Sql开发简单网站,从配置环境开始

    课题描述: Java实验五 Servlet (继续使用实验四中创建的students数据库和其中的scores表) 使用Tomcat作为Web服务器和Servlet容器,使用SQL Server/My ...

  10. Java Web 学习(2) —— JSP

    JSP 一. 什么是 JSP JSP 和 Servlet Servlet 有两个缺点是无法克服的:首先,写在 Servlet 中的所有 HTML 标签必须包含 Java 字符串,这使得处理HTTP响应 ...