HTTP清晰的学习笔记

HTTP协议—应用层

请求消息(Request)—浏览器给服务器发

包含四部分
  1. 请求行:说明请求类型,要访问的资源,以及使用的http版本
  2. 请求头:说明服务器要使用的附加信息,由键值对构成的
  3. 空行:空行是必须要有的,即使没有请求数据
  4. 请求数据:也叫主体,可以添加任意的其他数据
例如
GET /3.txt HTTP/1.1

/: 资源目录的根目录 三部分内容由空格间隔

  • Host: localhost:2222
  • User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:24.0) Gecko/201001 01 Firefox/24.0
  • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
  • Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
  • Accept-Encoding: gzip, deflate
  • Connection: keep-alive
  • If-Modified-Since: Fri, 18 Jul 2014 08:36:36 GMT

请求数据 换行:\r\n

响应消息(Response)—服务器给浏览器发

包含四部分
  1. 状态行:包括http协议版本号,状态码,状态信息
  2. 消息报头:说明客户端要使用的一些附加信息
  3. 空行:空行是必须要有的
  4. 响应正文:服务器返回给客户端的文本信息
例如
  • HTTP/1.1 200 Ok
  • Server: micro_httpd
  • Date: Fri, 18 Jul 2014 14:34:26 GMT
  • Content-Type: text/plain; charset=iso-8859-1 (必选项)/告诉服务器发送的数据类型/
  • Content-Length: 32 /发送的数据长度/
  • Content-Language: zh-CN
  • Last-Modified: Fri, 18 Jul 2014 08:36:36 GMT
  • Connection: close
#include <stdio.h>int main(void)
{printf("hello world!\n"); return 0;
}

HTTP5种请求方法

GET

请求指定的页面信息,并返回实体主体

POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数 据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

HEAD

类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头

PUT

从客户端向服务器传送的数据取代指定的文档的内容

DELETE

请求服务器删除指定的页面。

CONNECT

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

OPTIONS

允许客户端查看服务器的性能

TRACE

回显服务器收到的请求,主要用于测试或诊断。

在这里插入图片描述

get方法把信息都显示出来了
在这里插入图片描述
post并不会

HTTP常用状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

  1. 1xx:指示信息–表示请求已接收,继续处理
  2. 2xx:成功–表示请求已被成功接收、理解、接受
  3. 3xx:重定向–要完成请求必须进行更进一步的操作
  4. 4xx:客户端错误–请求有语法错误或请求无法实现
  5. 5xx:服务器端错误–服务器未能实现合法的请求

常见状态码

  1. 200 OK 客户端请求成功
  2. 400 Bad Request 客户端请求有语法错误,不能被服务器所理解
  3. 401 Unauthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头 域一起使用
  4. 403 Forbidden 服务器收到请求,但是拒绝提供服务
  5. 404 Not Found 请求资源不存在,eg:输入了错误的URL
  6. 500 Internal Server Error 服务器发生不可预期的错误
  7. 503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常
    在这里插入图片描述

HTTP种文件类型

普通文件: text/plain; charset=utf-8

  • .html : text/html; charset=utf-8
  • .jpg: image/jpeg
  • .gif : image/gif
  • .png : image/png
  • .wav : audio/wav
  • .avi: video/x-msvideo
  • .mov : video/quicktime
  • .mp3 : audio/mpeg

编码方式

  1. charset=iso-8859-1 西欧的编码,说明网站采用的编码是英文;
  2. charset=gb2312 说明网站采用的编码是简体中文;
  3. charset=utf-8 代表世界通用的语言编码;可以用到中文、韩文、日文等世界上所有语言编码上
  4. charset=euc-kr 说明网站采用的编码是韩文;
  5. charset=big5 说明网站采用的编码是繁体中文;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383152.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在 Centos7 x86_64下将vim一键配置为一款强大的C++,IDE

vim功能很强大&#xff0c;但是对于我这样的小白很不友好 然后就有一位大佬&#xff0c;为了辅助我这样的菜鸡&#xff0c;然后供我们一键搞定&#xff0c;在vim畅快编写代码的功能。 首先强烈不推荐在root用户下使用&#xff0c;确保电脑连着网。在普通用户下执行此命令 cur…

听说今天发表文章给勋章

听说今天发表文章给勋章

详解string容器(应用+模拟实现,string练习题)

为什么要有string容器 string&#xff1a;其实就是一个字符串,c对字符串进行了封装的&#xff0c;封装到一个类里面&#xff0c;这样用户就不用担心开辟空间的问题&#xff0c;只需要往string类里放字符串就可以了&#xff0c;string其实还可以自增长 很多人就会有一个疑问&am…

浅拷贝+引用计数--写时拷贝---模拟实现string容器

引用计数 深拷贝 多个对象共享同一份资源时&#xff0c;最后能够保证该资源只被释放一次 应该由哪个对象释放资源&#xff1f; 由最后一个使用该资源的对象去释放 怎么知道一个对象是最后一个使用该资源的对象&#xff1f; 给一个计数&#xff0c;记录使用该资源对象的个数 实…

详解vector容器(应用+模拟实现,vector相关练习题)

vector容器 动态的顺序表&#xff0c;数组。 vector操作 vector操作及其概念 构造 vector<int>v1;vector<int>v2(10, 5);vector<int>v3(v2);int array[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };vector<int>v4(array, array sizeof(array) / sizeof(a…

详解list容器(应用+模拟实现)

list容器 带头结点的双向循环链表 list操作 list容器的概念及其操作 构造和销毁 list<int>L1;list<int>L2(10, 5);vector<int>v{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };list<int>L3(v.begin(), v.end());list<int>L4(L3);元素访问 cout << L3.…

vector和list容器有哪些区别

这个问题的本质还是在问顺序表和链表的区别 底层结构不同 vector容器list容器一段连续的空间带头结点的双向循环链表 元素访问方式 vector容器list容器支持随机访问—O(1)不支持随机访问—O(N)需要扩容不需要扩容任意位置插入元素----O(N)–搬移元素O(1) 迭代器不同 vector…

复习栈和队列,详解最小栈,栈的弹出压入序列,逆波兰表达式求值

栈和队列的概念 栈:吃进去吐出来 对列&#xff1a;吃进去拉出来 数据结构中的栈和内存中的区别 数据结构中的栈具有后进先出的特性&#xff0c;而内存中的栈是一个内存空间&#xff0c;只不过这个内存空间具与数据结构的栈具有相同的特性。 栈和队列操作 栈和队列基本操作…

CentOS7关闭防火墙

firewalld的基本使用 启动 systemctl start firewalld关闭 systemctl stop firewalld查看状态 systemctl status firewalld 开机禁用 systemctl disable firewalld开机启用 systemctl enable firewalldCentOS 7的服务管理 启动一个服务 systemctl start firewalld.service关闭…

详解优先级队列priority_queue(应用+模拟实现)

优先级队列的概念 优先队列是一种容器适配器&#xff0c;根据严格的弱排序标准&#xff0c;它的第一个元素总是它所包含的元素中最大的此上下文类似于堆&#xff0c;在堆中可以随时插入元素&#xff0c;并且只能检索最大堆元素(优先队列中位于顶部的元 素)。优先队列被实现为容…

c++中容器适配器

什么是容器适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结)&#xff0c;该中模式是将一个类的接口转换成客户希望的另外一个接口。 stack模拟封装 template<class T,class Container deque<T>>cl…

模拟实现priority_queue优先级队列

优先级队列 无参构造 priority_queue():c(){}区间构造 区间构造需要用到迭代器&#xff0c;而迭代器每个容器的类型不一样&#xff0c;所以用模板给出&#xff0c;初始化列表&#xff0c;把用户给进来的元素空间起始位置&#xff0c;放到优先级队列中底层空间的位置&#xf…

详解malloc,calloc,realloc原理及其模拟实现

malloc原理 malloc它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时&#xff0c;它沿连接表寻找一个大到足以满足 用户请求所需要的内存块。然后&#xff0c;将该内存块一分为二&#xff08;一块的大小与用户请求的大小相等&#xff0c;另一块的大…

c++动态内存管理题目

malloc/free和new/delete的区别 malloc/free和new/delete的共同点是&#xff1a;都是从堆上申请空间&#xff0c;并且需要用户手动释放。不同的地方是&#xff1a; malloc和free是函数&#xff0c;new和delete是操作符malloc申请的空间不会初始化&#xff0c;new可以初始化ma…

私人博客定制----封装数据库接口

封装MySQLAPI 我们先把初始化句柄和断开句柄进行一个封装 static MYSQL* MySQLInit(){ //1.初始化一个Mysql句柄建立连接 MYSQL* connect_fd mysql_init(NULL); //2.和数据库建立连接 if (mysql_real_connect(connect_fd, "127.0.0.1", "root&quo…

私人博客定制---服务器接口封装

实现服务器接口 我们用一个http服务器作为底层&#xff0c;但是c中并没有先成的http服务器&#xff0c;所以我在GitHub上找到一个牛人写的http服务器&#xff0c;拿来直接用&#xff0c;节省本项目开发的时间 这是服务器的链接地址 上面有详细的使用方法&#xff0c;本文就不再…

私人博客定制

项目背景 可行性方面 需求分析&#xff1a; 详细设计&#xff1a; 数据库设计 博客管理API的设计 标签相关API 服务器端的实现 对数据库操作进行封装 对服务器操作进行封装 客户端实现 具体操作 使用markdown 具体实现 测试 项目效果展示 维护 完整代码 项目…

初识c++中的函数模板

函数模板 函数模板概念 函数模板:编译器生成代码的一个规则。函数模板代表了一个函数家族&#xff0c;该函数模板与类型无关&#xff0c;在使用时被参数化&#xff0c;根据实参类型产生函数的特定类型版本。 函数模板格式 //要让这个函数与类型无关 //Add函数模板 template…

深入理解c++中的函数模板

非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数当成常量来使…

c++中的IO流

c语言中的IO操作 标准类型的输入输出: 输入------>数据来源是通过键盘进行输入输出------>程序中的数据输出到控制台 c语言中: scanf:输入 printf:输出 两个函数的相同点 1 —格式串 2 —不定参数 两个函数的缺陷 1 —用户要提供数据的格式—用户要记忆大量的格式串—…