标签:未能 dir 控制 sch forbidden 数据 tls location connect
title: HTTP学习记录
toc: true
date: 2018-09-21 20:40:48
HTTP协议,HyperText Transfer Protocol,超文本传输协议,是因特网上应用最为 广泛的一种网络传输协议。
已过时,只接受GET一种请求方法,没有在通讯中指定版本号,且不支持请求头。
因为这个版本不支持POST方法,因此客户端无法向服务器传递太多信息。
第一个在通讯中指定版本号的版本,至今仍被广泛采用,特别是在代理服务器中。
当前版本,默认采用持久连接,并能很好地配合代理服务器工作。
支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。
SPDY (发音为"speedy") ,是一个由 Google 主导的研究项目发明的HTTP替代协议。SPDY一开始主要关注降低延迟,采用了TCP通道,但是使用了不同的协议来达到此目的。
简称为h2(基于TLS/1.2或以上版本的加密连接)或h2c(非加密连接)。
HTTP/1.1相较于HTTP/1.0的主要区别
HTTP/2与HTTP/1.1比较
HTTP/2 相比 HTTP/1.1 的修改并不会破坏现有程序的工作,但是新的程序可以藉由新特性得到更好的速度。
HTTP/2 保留了 HTTP/1.1 的大部分语义,例如请求方法、状态码乃至URI和绝大多数HTTP头部字段一致。
但是 HTTP/2 采用了新的方法来编码、传输客户端/服务器间的数据。
HTTP/1.1与SPDY的区别
其与HTTP/1.1相比,SPDY主要的改变有:
HTTP/2与SPDY的比较
HTTP/2的开发基于SPDY进行跃进式改进。在诸多修改中,最显著的改进在于,HTTP/2使用了一份经过定制的压缩算法,基于霍夫曼编码,以此替代了SPDY的动态流压缩算法,以避免对协议的Oracle攻击——这一类攻击以CRIME为代表。此外,HTTP/2禁用了诸多加密套件,以保证基于TLS的连接的前向安全。
基于TCP/IP通信协议传递数据。
HTTP协议工作在客户端-服务端架构(C/S)上,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器有Apache服务器、IIS(Internet Informatica Services)服务器等。
Web服务器根据接收到的请求,向客户端发送响应信息。
HTTP默认端口号为80,我们也可以改为8080或者其他端口。
HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)定位互联网上的资源。
HTTP是:
HTTP协议通信流程:
Web浏览器<=HTTP协议=>HTTP服务器<=>CGI(通用网关接口)应用程序<=>数据库
其中CGI:
是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据库API 与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。
用于HTTP协议交互的信息称为HTTP报文。请求端(客户端)的HTTP报文称为请求报文,响应端(服务器端)的叫响应报文.
HTTP报文本身是由多行(用CR+LF作为换行符)数据构成的字符串文本。
HTTP报文大致可分为报文首部和报文主体,两者由最初出现的空行(CR+LF)来划分。
通常并不一定要有报文主体。
报文首部
服务器端或客户端需处理的请求或响应的内容及内容
请求报文的报文首部由请求行、请求首部字段、通用首部字段、实体首部字段、其他组成
响应报文的报文首部由状态行、响应首部字段、通用首部字段、实体首部字段、其他组成
CR+LF
CR,Carriage Return,回车符,16进制0x0d
LF,Line Feed,换行符,16进制0x0a
报文主体
应被发送的数据
(参考自红宝书)
虽然不同浏览器实际发送的头部信息会有所不同,但下边这些基本上是所有浏览器都会发送的:
注意,这些字段名是一个字母都不应有区别的,一旦有区别,那它就不是首部字段。
根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
GET
GET方法请求指定的页面信息. 使用GET的请求应该只被用于获取数据.
HEAD
HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体.
POST
POST方法用于向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT
PUT方法从客户端向服务器传送的数据取代指定的文档的内容。
注意:因为HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般的web网站不使用该方法。
DELETE
DELETE方法删除指定的资源。
注意:和PUT一样,因为HTTP/1.1的DELETE方法自身不带验证机制,存在安全性问题,因此一般的web网站不使用该方法。
CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS
询问支持的方法,查询请求URI指定的资源支持的方法。
TRACE
回显服务器收到的请求,查询发送出去的请求是怎样被加工/修改的,主要用于测试或诊断(因为从代理服务器路由中转时请求可能被篡改)。不常用。
PATCH
PATCH方法用于对资源进行部分修改。(PUT为对资源进行整体覆盖)
常见状态码:
Content-Type: text/html; charset=UTF-8
实体首部字段,表示实体主体的媒体类型。
字段值采用type/subtype形式赋值。
对照表链接:https://www.w3cschool.cn/http/ahkmgfmz.html
W3C的教程的学习笔记,过两天再啃一下MDN和《图解HTTP》,还要再复习一下计网,很多都忘了...
emmmW3C有的是错的...使用网络教程需谨慎....
关于HTTP/2.0以及SPDY等均来自维基百科。
这里只是重新回忆一下什么是HTTP,还是要看文档!啃《图解HTTP》!复习计网!
标签:未能 dir 控制 sch forbidden 数据 tls location connect
原文地址:https://www.cnblogs.com/zmj97/p/10161694.html