HTTP协议:HTTP(超文本传输协议)协议就是计算机在网络中进行通信所必须共同遵守的规则,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器,我们目前使用的是HTTP/1.1 版本。

  HTTP协议是无状态的:同一个客户端的这次请求和上次请求是没有对应关系的,对http服务器来说,它并不知道这两个请求来自同一个客户端。为了解决这个问题,Web程序引入了Cookie机制来维护状态。

  Web服务器,浏览器,代理服务器:当我们在浏览器地址栏输入URL后,我们的浏览器给Web服务器发送一个RequestWeb服务器接到Request后进行处理,生成相应的Response(对象),然后发送回浏览器,浏览器解析Response中的HTML,我们便看到了网页。代理服务器就是网络信息的中转站,其功能主要是提高访问速度(大多代理服务器都有缓存功能),隐藏身份

URL(Uniform Resource Locator)用于描述一个网络上的资源地址,基本合适为:

  scheme://host[:port#]/path/.../[?query-string]

scheme: 指定所需要的协议(例如:http,https,ftp)
host: http服务器的IP地址或者域名
port# http服务器的默认端口80,这种情况下可以省略。如果使用了其他端口,则必须指明,例如:https://www.cnblogs.com:8080/
path 访问资源的路径
query-string 发送给Web服务器的数据

URL的一个例子:http://localhost/MVCProject/emp?username=7788&password=pwd

Request:打开一个网页需要浏览器发送多次Request。

    1. 在浏览器输入URL时,浏览器发送一个Request去获取URL地址的html,服务器吧Response发送回浏览器。
    2. 浏览器解析Response中的html,发现其中引用很多其他文件,比如图片,CSS,JS。
    3. 浏览器会自动再次发送Request给服务器去获取图片,CSS,JS等相应的文件。
    4. 等所有文件都下载成功后,网页就被显示出来。

Get和POST方法:

http协议定义了很多种与服务器交互的方法,最基本的有4中,分别是GET,POST,PUT,DELETE.一个URL地址用于描述一个网络上的资源,而http中的GET,POST,PUT,DELETE就对应这个资源的查,改,增,删4个操作。我们最常见的是GETPOSTGET一般用于获取/查阅资源信息POST一般用于更新资源信息。

  1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,例如:emp.html?username=7788&password=pwd    POST方法是把提交的数据放在http包的body中。
  2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制。
  3. GET方式需要使用RequestQueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
  4. GET后退/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
  5. GET书签可以收藏,POST书签不可收藏。
  6. GET可以缓存,POST不能缓存。
  7. GET编码类型application/x-www-form-url ,POST编码类型encodedapplication/x-www-form-urlencoded 或 multipart/form-data 。为二进制数据使用多重编码。
  8. GET历史参数保留在浏览器历史中。POST参数不会保留在浏览器历史中。
  9. GET对数据长度有限制(URL的最大长度是2048个字符),GET方法向URL添加数据。POST无限制
  10. GET只允许ASCII字符,POST没有限制。
  11. GET安全性较差,发送的数据是URL的一部分,对任何人可见。POST参数不会显示在URL中,也不会保留在浏览器历史或web服务器日志中。

状态码:

  Response消息中的第一行叫状态行,状态码用来告诉http客户端,http服务器是否产生了预期的Response。HTTP状态码的英文为HTTP Status Code。

HTTP/1.1中定义了5类状态码,由三位数字组成。第一个数字定义了响应的类别

1**信息,服务器收到请求,需要请求者继续执行操作

2**成功,操作被成功接收并处理

3**重定向,需要进一步的操作以完成请求

4**客户端错误,请求包含语法错误或无法完成请求

5**服务器错误,服务器在处理请求的过程中发生了错误

下面是常见的HTTP状态码:

  • 200 – 请求成功
  • 301 – 资源(网页等)被永久转移到其它URL
  • 404 – 请求的资源(网页等)不存在
  • 500 – 内部服务器错误

HTTP的一些基本概念的更多相关文章

  1. 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念

    一.前言     DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...

  2. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  3. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...

  4. 声音分贝的概念,dBSPL.dBm,dBu,dBV,dBFS

    需要做个音频的PPM表,看着一堆的音频术语真是懵了,苦苦在网上扒了几天的文档,终于有了点收获,下面关于声音的分贝做个总结. 分贝 Decibel 分贝(dB)是一个对数单位(logarithmic u ...

  5. js面向对象学习 - 对象概念及创建对象

    原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...

  6. 【Linux大系】Linux的概念与体系

    感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei 我在这一系列文章中阐述Linux的基 本概念.Linux操作系统继承自UNIX.一个操作系统是一套控制和使用计算 ...

  7. KOTLIN开发语言文档(官方文档) -- 2.基本概念

    网页链接:https://kotlinlang.org/docs/reference/basic-types.html 2.   基本概念 2.1.  基本类型 从可以在任何变量处理调用成员函数和属性 ...

  8. .NET面试题系列[5] - 垃圾回收:概念与策略

    面试出现频率:经常出现,但通常不会问的十分深入.通常来说,看完我这篇文章就足够应付面试了.面试时主要考察垃圾回收的基本概念,标记-压缩算法,以及对于微软的垃圾回收模板的理解.知道什么时候需要继承IDi ...

  9. 《徐徐道来话Java》(1):泛型的基本概念

    泛型是一种编程范式(Programming Paradigm),是为了效率和重用性产生的.由Alexander Stepanov(C++标准库主要设计师)和David Musser(伦斯勒理工学院CS ...

  10. 简述linux同步与异步、阻塞与非阻塞概念以及五种IO模型

    1.概念剖析 相信很多从事linux后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分 ...

随机推荐

  1. hadoop rpc协议客户端与服务端的交互流程

    尽管这里是hadoop的rpc服务,但是hadoop还是做到了一次连接仅有一次认证.具体的流程待我慢慢道来. 客户端:这里我们假设ConnectionId对应的Connection并不存在.在调用ge ...

  2. ASP.NET Core Web API 集成测试

    本文需要您了解ASP.NET Core Web API 和 xUnit的相关知识. 这里有xUnit的介绍: https://www.cnblogs.com/cgzl/p/9178672.html#t ...

  3. 使用nvm管理node不同版本,安装,环境配置,切换不同版本的node版本

    文章包含以下内容: 一.下载地址 二.nvm-noinstall.zip安装 三.nvm-setup.zip安装 四.测试安装以及使用 一.下载地址 https://github.com/coreyb ...

  4. springcloud~配置中心实例搭建

    server端 build.gradle相关 dependencies { compile('org.springframework.cloud:spring-cloud-config-server' ...

  5. Java基础知识回顾之六 ----- IO流

    前言 在上一篇文章中,回顾了Java的多线程.而在本篇文章中主要介绍Java IO的相关知识. IO的介绍 什么是IO? IO的名称又来是Input与Output的缩写,也就是输入流和输出流.输入流用 ...

  6. 学习ASP.NET Core Razor 编程系列十四——文件上传功能(二)

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  7. SmartSql Map

    SmartSqlMap 属性 说明 Scope 域,用于SqlMap定义Sql声明范围 Statement标签 属性 说明 Id 唯一性编号 Cache 缓存策略编号,引用自Cache标签 State ...

  8. 时序数据库连载系列:指标届的独角兽Prometheus

    简介 Prometheus是SoundCloud公司开发的一站式监控告警平台,依赖少,功能齐全.于2016年加入CNCF,广泛用于 Kubernetes集群的监控系统中,2018.8月成为继K8S之后 ...

  9. cocos creator主程入门教程(五)—— 日志系统

    五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以TypeScript为介绍语言. 这一篇介绍日志系统的设计.一般我们开发一个demo,只会简单的用cocos提供的cc.log打印下日志, ...

  10. Scope 功能的改进

    前段时间发表了一篇文章 面向对象的一小步:添加 ActiveRecord 的 Scope 功能 提到一种更加友好的方式做数据库查询.经小伙伴的建议,在满足同样条件下,可以有更为简洁的封装方法. 这需要 ...