1 HTTP概念

把握三个点:
1 HTTP协议(超文本传输协议) HTTP是一个基于TCP/IP通信协议来传递数据,默认端口80
2 HTTP是无连接(限制每次连接只处理一个请求),无状态的(对于事务处理没有记忆能力)
3 HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

2 HTTP协议结构

HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。流程大致 : web Browser -- HTTP Protocol -- HTTP Server -- CGI Program -- Database

  客户端 c:request
请求行 request line 请求方法 url 协议版本
请求头 header 头部字段名 : 值 请求主体
例如
GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi 服务端 s:response
状态行 HTTP/1.1 200 OK 协议 状态码 注释
消息报头 Date Content-Type content-Lnegth 响应正文 content
例如:
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

3 HTTP协议请求方式

PUT   创建资源
从客户端向服务器传送的数据取代指定的文档的内容。
POST 更新资源
post请求有消息体,可以携带大量数据,数据放在消息体中
GET 获取资源
get请求无消息体,只能携带少量数据,数据放在url中
HEAD 获取报头资源
OPTIONS 允许客户端查看服务器的性能。
DELETE 删除指定页面资源
TRACE 回显服务器收到的请求,主要用于测试或诊断
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

4 HTTP响应头信息

Allow   服务器支持的方法
content-encoding 文档编码方法
content-length 内容长度
content-type 文档所属类型
date 当前的时间
location 客户端去哪提取文档
reflesh 浏览器应在多少时间刷新文档
server 服务器名字
set-cookie 设置页面关联的cookie
last-modified 文档最后的改动时间
Host 域名
Date 时间
User-Agent 浏览器版本

5 HTTP状态码

5 种类型
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步寻找资源
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误
常见的http状态码
200- 请求成功
301-资源被永久转移到其他URL
404 请求资源页面不在
500 内部服务器错误

6 HTTP对象HttpRequest

HttpRequest代表来自客户端的Http请求

原理:request与response是页面发生请求时,Django内置模块把data数据包装成HttpRequest对象,然后Django加载合适的view方法,将HttpRequest对象作为第一个参数传给view方法,则其返回的结果就是HttpResponse对象.

HttpRequest属性列表:

path      请求页面的全路径,不包括域名—例如, "/django/student/"
method 请求类型,大写表示, GET,POST 等
GET 包含所有HTTP GET参数的Queryset对象,获取通过找到key获取value
POST 包含所有HTTP POST参数的Queryset对象,获取通过找到key获取value
COOKIES 包含所有cookies的Python字典对象,键值对Keys和values都是字符串
META 包含所有可用HTTP头部信息的字典(端口,主机名,主机头信息等)
FILES 包含所有上传文件的Queryset对象,对应 <input type="file" name="" />标签中name属性的值
注意:只有在请求方法是POST,并且在<form>有enctype="multipart/form-data"属性时FILES才拥有 数据。否则,FILES 为空 user 是一个django.contrib.auth.models.User 对象,代表当前登录的用户,需要引入使用
from django.contrib.auth import User 实例化 user = User() session 唯一可读写的属性,代表当前会话的字典对象。只有激活Django中的session支持时该属性才可用
当服务器session存储数据时,可以在request中调用 request.session['key']

7 HTTP对象HttpResponse

HttpResponse代表来自服务端的Http响应
HttpResquest是由Django自动创建,但是HttpResponse则必须由我们自己创建,每个view方法必须返回一个HttpResponse对象 from django.http.response import HttpResponse HttpResponse常见的方法 HttpResponse.has_header(header) 判断响应头是否有给定的名称,返回True or False,不区分大小写
HttpResponse.set_cookie() 通知客户端设置cookie信息,一般存储sessionid+value用于session取值
HttpResponse.delete_cookie 清除cookie信息
HttpResponse.write(content) 写入content至报文中
HttpResponse.flush() 将缓存区的内容写入报文
HttpResponse.tell() 移动文件中的操作指针 HttpResponse 子类
class HttpResponseRedirect 资源重定向
class HttpResponseNotFound 资源未找到 404
class HttpResponseBadRequest 错误请求 400
class HttpResponseForbidden 无权限访问 403
class HttpResponseServerError 服务器错误 500

浅谈HTTP协议的更多相关文章

  1. 【转】 浅谈Radius协议

    浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报  分类: Radius协议分析(6)  从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...

  2. 转:浅谈Radius协议 -来自CSDN:http://blog.csdn.net/wangpengqi/article/details/17097221

    浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报  分类: Radius协议分析(6)  从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...

  3. 浅谈HTTP协议(下)

    下面来讲响应消息.响应消息也分为响应起始行.响应头部.CRLF.响应主体. 响应起始行包括协议版本.响应状态码.原因短句.这里的重点就是响应状态码,它一共分为5类,状态码准确的说是一个三位数. 1xx ...

  4. 浅谈ARP协议以及应用

    0. 前言 本章主要简单的介绍ARP的协议格式,主机如何发送和处理ARP报文,以及免费ARP. 1. ARP协议原理 ARP,全称Address Resolution Protocol,地址解析协议, ...

  5. 浅谈HTTP协议(上)

    今天讨论一下HTTP协议.一个做前端的,如果连HTTP协议都不了解,那实在是太不合格了. 首先,什么是HTTP?Hyper Text Transfer Protocol(超文本传输协议),用在浏览器和 ...

  6. 从日常开发说起,浅谈HTTP协议是做什么的。

    引言 HTTP协议作为Web开发的基础一直被大多数人所熟知,不过相信有很多人只知其一不知其二.比如咱们经常用到的session会话机制是如何实现的,可能很多人都说不出来吧.其实session会话就是H ...

  7. 通过Java代码浅谈HTTP协议

    最近刚看了http协议,想写点东西加深一下理解,如果哪儿写错了,请指正. 1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(W ...

  8. 浅谈HTTP协议与TCP协议

    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送议. 主要特点 ...

  9. 浅谈Http协议是怎么回事?

    老实说关于http协议这个概念,见到最多的还是各类招聘信息.在平时的工作中,除了了解一些请求,响应,请求头这些概念外,对于http协议也没有太多的关心.因为貌似对平时的工作没有什么影响,所以在写这篇关 ...

随机推荐

  1. 3sum(从数组中找出三个数的和为0)

    Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...

  2. Spring Framework 5 中的新特性

    https://www.ibm.com/developerworks/cn/java/j-whats-new-in-spring-framework-5-theedom/index.html Spri ...

  3. 深度学习之 TensorFlow(四):卷积神经网络

    基础概念: 卷积神经网络(CNN):属于人工神经网络的一种,它的权值共享的网络结构显著降低了模型的复杂度,减少了权值的数量.卷积神经网络不像传统的识别算法一样,需要对数据进行特征提取和数据重建,可以直 ...

  4. python命令行使用的问题

    python命令行使用的时候要注意一个陷阱,就是如果某个语句不是在>>>下执行的,而是在...下执行的,那么它可能没有执行成功. 例如如下没有成功,原因是上面有一句注释,导致没有执行 ...

  5. python笔记:#004#注释

    注释 目标 注释的作用 单行注释(行注释) 多行注释(块注释) 01. 注释的作用 使用用自己熟悉的语言,在程序中对某些代码进行标注说明,增强程序的可读性 02. 单行注释(行注释) 以 # 开头,# ...

  6. AUTOSAR ArcticCore重构 - for_each_HOH

    Arctic Core是AUTOSAR的实现,早期版本是开源的. 基本问题 在ARM架构下对CAN driver的实现(arch/arm/arm_cm3/drivers/Can.c)中,有这样一段代码 ...

  7. django项目部署上线

    前言 完善的django项目上线,有很多种上线的方法,比如apache, uwsgi, nginx等.这里只介绍2种,一种是django自带的,另外一种则是nginx + uwsgi完成介绍.这里的系 ...

  8. cnblog 模板 SimpleMemory 个性化设置代码备份

    /页面顶部作者名/ blogTitle h1 { font-size: 50px; margin-top: 0px; } /页面简介/ blogTitle h2 { letter-spacing: 1 ...

  9. Tornado day1

    Tornado 之路由配置 首先导入模块,使用Application方法中可配置多个路由,格式必须为列表中是元组 元组的第一个是配置的url,第二个参数时自定义的类(继承自RequestHandler ...

  10. 微信小程序开发框架技术选型

    目前微信小程序开发有三种方式,原生微信小程序,使用mpVue或wepy微信小程序开发框架. 三种开发方式横向对比资料如下: