HTTP基础(整理)

前一段时间看了有关这个协议的相关文档,对这个协议有了新的理解,这里整理一下。

http是应用层面向对象的协议。

它有以下几个特点:

1、  支持客户服务器模式(这是废话,不支持这个模式怎么工作)

2、  灵活(传什么都行,传的类型由content-type标记)

3、  简单、快速(当客户端有求于服务器的时候,只需注明请求方法和路径,方法有:get,post,head。后面在讲请求报文的时候会举例说明。每种不同的方法都意味着客户和服务器连接的不同方式)

4、  无连接(每次只处理一个请求,收到请求,完成响应,断开连接,下一位……可以节省不少时间)

5、  无状态(没有记忆效应,后面数据要用到前面数据的话,要从头开始。有利有弊:如果是后面要用前面的数据,传送的数据量要加大不少;但是不是这种情况的话,应答就很快)

关于请求和应答:

这是这个协议的具体体现,我们看看它到底是怎样工作的。

首先客户端发出请求,格式如下:


请求行


请求报头


请求正文

请求行:


方法


URI


协议版本

方法这里举例说明:

get:输入网址,向服务器通过get要资源GET /form.html HTTP/1.1 (CRLF)

post:请求服务器接受附在请求后面的数据,例如表单POST /reg.jsp HTTP/ (CRLF)

head:和get相似,主要用于检测是否能访问,以及检查更新

然后是服务器的响应


状态行


响应报头


响应正文

状态行:


http-version


Status-code


Reason-Phrase

也就是:   HTTP/1.1 200 OK(CRLF)


http协议版本


响应代码


响应代码的文本描述

关于响应代码和文本描述:

200 OK //正常响应

400 Bad Request //请求的语法不被服务器接受

401 Unauthorized //未授权的请求,要和报头域中的其他字段联合使用

403 Forbidden //服务器接收到请求,但是拒绝服务

404 Not Found //请求的页面找不到

500 Internal Server Error //服务器发生故障

503 Server Unavailable //这一会不行,待会再试试

下面是两个报头:

请求报头:(下面是一个个请求报头域组成的请求报头)


Accept


Accept-charset


Accept-encoding


Accept-language


Authorization


Host


User-agent

Authorization:接收到401的消息之后,再次发送验证的时候要包含这个域。

不再一一赘述各种域的功能,我们看一个例子:

GET /form.html HTTP/1.1 (CRLF)

Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms

-excel,application/vnd.ms-powerpoint,application/msword,*/*
(CRLF) (接受哪些类型的消息)

Accept-Language:zh-cn (CRLF) (指定一个自然语言,缺省什么都可以)

Accept-Encoding:gzip,deflate (CRLF) (可接受的内容编码,缺省什么都可以)

If-Modified-Since:Wed,05 Jan 2007 11:21:25
GMT (CRLF)

If-None-Match:W/"80b1a4c018f3c41:8317"
(CRLF)

User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows
NT 5.0) (CRLF) (告知自己的操作系统、版本号)

Host:www.guet.edu.cn (CRLF)(目的主机,端口号)

Connection:Keep-Alive (CRLF)

(CRLF)

响应报头:(同理,一个个的响应报头域)


Location


Server


WWW-Authenticate

Location:重定向接受者到一个新的位置。

Server:服务器用来解决请求所用的软件信息Server?Apache-Coyote/1.1和请求报头的

User-agent相对应。

WWW-Authenticate:包含在401 Unauthorized响应信息中。客户接收到401之后,再发送Authorization请求报头域请求验证,得到的响应就包含这个域。

WWW-Authenticate:Basic realm="Basic Auth Test!"基本验证。

到此,已经将http相关的报文、各个域的功能简单的介绍完了。关于HTTP的其他补充,有兴趣再整理。

欢迎大家指正,共同进步(⊙o⊙)。

参考资料:《HTTP详解》

时间: 2024-10-16 21:54:09

HTTP基础(整理)的相关文章

HTML基础整理(一)

HTLM基础整理--思维导图(标签部分) 其他: <sub>下标</sub>     <sup>上标</sup> 优先级,越往后优先级越高. "right"(右对齐)               "top" (顶部) 对齐方式<tr align="center"(居中) valign="middle"(居中) "left"(左对齐)          

linux基础整理0316

一.linux基础整理 由于这是学习linux的第一周,整理的东西很杂很分散,其中包括了查看虚拟机的各种信息,命令相关的只整理了alias.date.history.cal.帮助会话screen等命令的使用,最后加上了两个常见问题处理办法:在以后的学习中会不断完善文中整理的相关内容. 1.查看系统信息类命令: 查看内核版本 [root@CentOS7 ~]#uname -r 3.10.0-957.el7.x86_64 查看系统版本 查看配置文件 [root@CentOS7 ~]#cat /etc

机器学习 —— 基础整理(六):线性判别函数——感知器、松弛算法、Ho-Kashyap算法

本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 (一)线性判别函数与广义线性判别函数 一.线性判别函数 这篇总结继续关注分类问题.假设判别函数(Discriminant function)的参数形式已知,用训练的方法直接根据样本估计判别函数的参数.线性判别函数的形式为: $$g(\textbf x)=\textbf w^{\top}\textbf x+w_0$$ $\textbf x\in \mathbb R^d$ 是

C#基础整理

元旦整理书架发现一本小册子--<C#精髓>中国出版社2001年出版的,粗略翻了下关于C#的知识点挺全的虽然内容谈得很浅也有很多过时的内容(话说这本书是我在旧书店花5块钱淘的)我保留原有章节并删减部分过时和不重要内容添加一些自己觉得重要的内容,具体目录如下: 第一章   简介    什么是.NET.CLI.CLR.CIL.IL.BCL?    什么是JIT和GC,JIT和GC是如何工作的?   第二章 C#语言参考   标识符.类型.变量.表达式与运算符.语句.类型组织.继承.访问修饰符.类和结

python基础整理----基本概念和知识

整理一下python的基本概念和知识, 主要用python3为语法标准. python介绍 一种面向对象的解释性计算机设计语言,具有丰富和强大的库. python定位:"优雅"."明确"."简单" 多种应用场景:可以写工具,后台服务,移动端等等. 运行环境搭建 下载对应版本的Python安装,官网地址如下 https://www.python.org/ 运行get-pip.py安装pip (Py3自带pip) https://bootstrap.

linux基础整理4

IP地址配置 1.setup工具 vi /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes service network restart 2.修改虚拟机连接方式为桥接 3.编辑-虚拟网络编辑器-vmnet0--桥接到有线网卡 4.UUID错误(针对复制镜像生效) vi/etc/sysconfig/network-scripts/ifcfg-eth0         删除MAC地址行 rm –rf/etc/udev/rules.d/70-pe

MySQL技术分类一:DB应用开发基础整理

MySQL技术分类整理一:DB应用开发基础1.库1).创建库syntax:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name    [create_specification] ... create_specification:    [DEFAULT] CHARACTER SET [=] charset_name  | [DEFAULT] COLLATE [=] collation_name 注:如果不使用if not exists,则当数据库

关于JAVA面向对象基础整理以及个人的理解(适合初学者阅读)

JAVA的基础语法等都跟C有很大的相似之处,所以这里就不多啰嗦了.直接从数组开始. 数组: 1.声明 int [] a; 在声明的过程中,并没有分配空间给数组.我们可以在声明的同时,用new来分配相应的空间 int [] a = new int[100]; 这里开辟了一个空间为100大小的数组,内存分配也完成了. 我们可以在声明的同时也确定元素个数 int [] a = new int[]{1,3,5,7,9}; 面向对象(重点) class Human{ int height; void br

HTML5游戏开发技术基础整理

随着HTML5标准最终敲定,HTML5将有望成为游戏开发领域的的热门平台.HTML5游戏能够运行于包括iPhone系列和iPad系列在内的计算机.智能手机以及平板电脑上,是目前跨平台应用开发的最佳实施方案.本文系根据[HML5 Canvas游戏开发实战]一书中的内容整理而成,是了解和学习HTML5游戏开发的基础内容,希望能够帮助到那些和博主一样致力于游戏开发的朋友们! JavaScript中的面向对象编程 对于游戏开发来说,面向对象编程(OOP)是一种重要而且必要的方法,所以在了解HTML5游戏

机器学习 —— 基础整理(四):特征提取之线性方法——主成分分析PCA、独立成分分析ICA、线性判别分析LDA

本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensionality) 维数灾难就是说当样本的维数增加时,若要保持与低维情形下相同的样本密度,所需要的样本数指数型增长.从下面的图可以直观体会一下.当维度很大样本数量少时,无法通过它们学习到有价值的知识:所以需要降维,一方面在损失的信息量可以接受的情况下获得数据的低维表示,增加样本的密度:另一方面也可以达到去噪