Django知识点归纳总结之HTTP协议与URL
Django复习知识点归纳总结
1.HTTP协议
超文本传输协议(Hyper Text Transfer Protocol),是用于万维网服务器与本地浏览器之间的传输超文本的传送协议。
HTTP是一个属于应用层的面向对象的协议。HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后想客户端发送响应信息。
2.HTTP协议特点
- 基于TCP/IP协议之上的应用层协议
- 基于请求-响应模式:HTTP协议规定,请求从客户端发出,最后服务端响应应该请求并返回。换句话说,肯定是先从客户端发送请求,在服务端收到请求信息后,响应请求。
- 无状态保存:HTTP协议是一种不保存状态,即无状态(stateless)的协议。HTTP协议,自身不对请求和响应之间的通信状态进行保存。换句话说,使用HTTP协议,每当有新的请求发送时,就会有对应的新的响应。协议本身并不保留之前一切的请求或响应报文的。这样可以更快的处理大量事务,确保协议的可伸缩性。
- 无连接:无连接含义是先限制每次链接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这样方式可以节省传输时间。
3.HTTP请求协议与响应协议
HTTP协议包含由浏览器发送数据到服务器需要遵循的请求协议与服务器发送数据到浏览器需要遵循的请求协议。 用户HTTP协议交互的新被称为HTTP报文。请求端(客户端)的HTTP报文叫做 请求报文,响应端(服务器端)的叫做 响应报文。
请求协议
请求首行: 请求方法(get(默认)/post) 空格 URL 空格 协议版本 回车符 换行符
请求头(多个K:V键值对):
头部字段名:值 回车符 换行符
头部字段名:值 回车符 换行符
回车符 换行符
请求体(请求的内容):客户端发送请求的具体内容


请求方式:GET 和 POST 请求
- GET 请求提交的数据会放在URL之后,以?分隔URL和传输数据,参数之间以&相连,如 EditBook?name=test1&id=123。
- POST 请求方式 是吧提交的数据放在HTTP协议包的请求体中
- GET请求提交的数据大小有限制(因为浏览器对URL长度有限制),而POST方法提交的数据没有限制。
- GET与POST 请求在服务端获取请求数据方式不同。
# GET 请求
# 请求首行
GET / HTTP/1.1\r\n
# get请求后面的参数
GET /?name=lqz&age=18 HTTP/1.1\r\n
# 请求头
Host: 127.0.0.1:8008\r\n
Connection: keep-alive\r\n
Cache-Control: max-age=0\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n
Cookie: csrftoken=7xx6BxQDJ6KB0PM7qS8uTA892ACtooNbnnF4LDwlYk1Y7S7nTS81FBqwruizHsxF\r\n\r\n'
# 请求体(get请求,请求体为空)
POST请求
# 请求首行
POST /?name=lqz&age=18 HTTP/1.1\r\n
# 请求头
Host: 127.0.0.1:8008\r\nConnection: keep-alive\r\nContent-Length: 21\r\nCache-Control: max-age=0\r\nOrigin: http://127.0.0.1:8008\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nReferer: http://127.0.0.1:8008/?name=lqz&age=18\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\nCookie: csrftoken=7xx6BxQDJ6KB0PM7qS8uTA892ACtooNbnnF4LDwlYk1Y7S7nTS81FBqwruizHsxF\r\n\r\n
# 请求体
name=qzk&password=123'
响应协议
响应状态行(响应首行): 协议版本 空格 状态码 空格 状态描述 回车符 换行符
响应头部(一堆K:V键值对):
头部字段名:值 回车符 换行符
头部字段名:值 回车符 换行符
回车符 换行符
响应体(响应内容以及数据)


响应状态码
状态码是当客户端向服务器端发送请求时,返回的请求结果。借助状态码,用户可以知道服务器是正常处理了请求还是出现了错误。

URL简介
统一资源定位符是对可以从互联网上得到的资源的位置和访问方式的一种简介的表示。是互联网上标准资源的地址。互联网上每一个文件都有唯一的URL,它包含的信息知乎文件的位置以及浏览器应该怎么处理它。
格式:
协议(HTTP/FTP)://IP:端口/路劲?name=qzk&age=18
注:?之前是请求路径, ?之后是请求的数据部分
Django知识点归纳总结之HTTP协议与URL的更多相关文章
- 【重走Android之路】【路线篇(二)】知识点归纳
[重走Android之路][路线篇(二)]知识点归纳 参考:http://blog.csdn.net/xujing81/article/details/7313507 第一阶段:Java面向对 ...
- python Django知识点总结
python Django知识点总结 一.Django创建项目: CMD 终端:Django_admin startproject sitename(文件名) 其他常用命令: 其他常用命令: 通过类创 ...
- 给Java新手的一些建议----Java知识点归纳(J2EE and Web 部分)
J2EE(Java2 Enterprise Edition) 刚出现时一般会用于开发企业内部的应用系统,特别是web应用,所以渐渐,有些人就会把J2EE和web模式画上了等号.但是其实 J2EE 里面 ...
- django知识点回顾与补充
一.django知识点回顾 1.Cookie操作 - 客户端本地存储的键值对 2.Session操作 - 3.URL路由 - /index -> view.函数 4.MTV 5.View中返回方 ...
- Django 知识点补充
Django 知识点补充 1 Django如何在Model保存前做一定的固定操作,比如写一条日志 (1)利用Django的Model的Signal Dispatcher, 通过django.db.mo ...
- 《零压力学Python》 之 第四章知识点归纳
第四章(决策和循环)知识点归纳 if condition: indented_statements [ elif condition: Indented_statements] [else: Inde ...
- 《零压力学Python》 之 第三章知识点归纳
第三章(第一个程序)知识点归纳 编程犹如写剧本.Python函数与剧本差别不大,你可以反复调用函数,而它每次都执行预定的“脚本”(脚本也可以指整个程序). 在Python IDLE中,真正的编程是从编 ...
- 《零压力学Python》 之 第二章知识点归纳
第二章(数字)知识点归纳 要生成非常大的数字,最简单的办法是使用幂运算符,它由两个星号( ** )组成. 如: 在Python中,整数是绝对精确的,这意味着不管它多大,加上1后都将得到一个新的值.你将 ...
- 《零压力学Python》 之 第一章知识点归纳
第一章(初识Python)知识点归纳 Python是从ABC语言衍生而来的 ABC语言是Guido参与设计的一种教学语言,为非专业编程人员所开发的. Python是荷兰程序员 Guido Van Ro ...
随机推荐
- java插入代码块
粘贴1: 当代码写到一定程度之后,就会发现很多代码都被重复地敲了N多遍,甚至毫不夸张地说:闭着眼睛都能敲出来.大量地敲这些重复地代码,除了锻炼敲键盘的速度,基本上没有其他益处,但是长期下来会浪费很多时 ...
- sparksql基础知识二
目标 掌握sparksql操作jdbc数据源 掌握sparksql保存数据操作 掌握sparksql整合hive 要点 1. jdbc数据源 spark sql可以通过 JDBC 从关系型数据库中读取 ...
- 深入js系列-类型(数字)
开头 js数字没有明确区分浮点数和整数类型,统一用number类型表示. number 基于IEEE 754标准实现 js采用的是双精度(64位二进制) 我们看一个基于IEEE 754标准实现都有会有 ...
- Python基于tkinter.messagebox实现简易消息框、对话框
库导入: import tkinter import tkinter.messagebox 有关提示框: tkinter.messagebox.showinfo(title=None, message ...
- Golang(二)基本概念
类型 18个基本类型:bool.string.rune.byte.int.uint.int8.uint.int8.int16.uint16.int32.uint32.int64.uint64.floa ...
- spring boot 启动原理详细解析
我们开发任何一个Spring Boot项目,都会用到如下的启动类 1 @SpringBootApplication 2 public class Application { 3 public stat ...
- kali无法安装nvidia显卡驱动
按照各位大神的博客安装nvidia显卡驱动一直失败,重启之后无法正常进入系统,恢复模式可以进入,一直以为自己是不是哪里步骤不对,后面来回重装了几次系统. 最后意识到虚拟机里用的是虚拟网卡,并非宿主机的 ...
- Jmeter之Bean shell使用(二)(转载)
转载地址:https://www.cnblogs.com/puresoul/p/4949889.html 上一篇Jmeter之Bean shell使用(一)简单介绍了下Jmeter中的Bean she ...
- 《C程序设计语言》(K&R)中文高清非扫描件
<C程序设计语言>(K&R)中文高清非扫描件(带书签目录) 对于某下载东西都要C币的网站无爱了.好不容易找了一个,发出来看会不会帮到别人 附上addr:https://pan. ...
- Python协程深入理解(转)
原文:https://www.cnblogs.com/zhaof/p/7631851.html 从语法上来看,协程和生成器类似,都是定义体中包含yield关键字的函数.yield在协程中的用法: 在协 ...