1 HTTP概念

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

2 HTTP协议结构

  1. HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。流程大致 : web Browser -- HTTP Protocol -- HTTP Server -- CGI Program -- Database
  2. 客户端 c:request
  3. 请求行 request line 请求方法 url 协议版本
  4. 请求头 header 头部字段名 :
  5. 请求主体
  6. 例如
  7. GET /hello.txt HTTP/1.1
  8. User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
  9. Host: www.example.com
  10. Accept-Language: en, mi
  11. 服务端 s:response
  12. 状态行 HTTP/1.1 200 OK 协议 状态码 注释
  13. 消息报头 Date Content-Type content-Lnegth
  14. 响应正文 content
  15. 例如:
  16. HTTP/1.1 200 OK
  17. Date: Mon, 27 Jul 2009 12:28:53 GMT
  18. Server: Apache
  19. Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
  20. ETag: "34aa387-d-1568eb00"
  21. Accept-Ranges: bytes
  22. Content-Length: 51
  23. Vary: Accept-Encoding
  24. Content-Type: text/plain

3 HTTP协议请求方式

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

4 HTTP响应头信息

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

5 HTTP状态码

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

6 HTTP对象HttpRequest

  1. HttpRequest代表来自客户端的Http请求
  2. 原理:requestresponse是页面发生请求时,Django内置模块把data数据包装成HttpRequest对象,然后Django加载合适的view方法,将HttpRequest对象作为第一个参数传给view方法,则其返回的结果就是HttpResponse对象.
  3. HttpRequest属性列表:
  4. path 请求页面的全路径,不包括域名—例如, "/django/student/"
  5. method 请求类型,大写表示, GET,POST
  6. GET 包含所有HTTP GET参数的Queryset对象,获取通过找到key获取value
  7. POST 包含所有HTTP POST参数的Queryset对象,获取通过找到key获取value
  8. COOKIES 包含所有cookiesPython字典对象,键值对Keysvalues都是字符串
  9. META 包含所有可用HTTP头部信息的字典(端口,主机名,主机头信息等)
  10. FILES 包含所有上传文件的Queryset对象,对应 <input type="file" name="" />标签中name属性的值
  11. 注意:只有在请求方法是POST,并且在<form>有enctype="multipart/form-data"属性时FILES才拥有 数据。否则,FILES 为空
  12. user 是一个django.contrib.auth.models.User 对象,代表当前登录的用户,需要引入使用
  13. from django.contrib.auth import User 实例化 user = User()
  14. session 唯一可读写的属性,代表当前会话的字典对象。只有激活Django中的session支持时该属性才可用
  15. 当服务器session存储数据时,可以在request中调用 request.session['key']

7 HTTP对象HttpResponse

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

    1.BeautifulSoup4库简介 What is beautifulsoup ? 答:一个可以用来从HTML 和 XML中提取数据的网页解析库,支持多种解析器(代替正则的复杂用法) 2.安装 p ...

  2. Failed to complete obtain psql count Master gp_segment_configuration Script Exiti

    问题: 在初始化过程中,如到以下问题: gpadmin-[FATAL]:-Failed to complete obtain psql count Master gp_segment_configur ...

  3. RA layer request failed

    新整的Eclipse环境出现这个问题,细化内容是不能connect,后来想起切换Eclipse底层库的事情,然后打开Eclipse的SVN设置.把SVN Client借口由JavaHL改为PureJa ...

  4. Centos7下安装MySql

    1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB systemctl start maria ...

  5. 并查集(union-find set)与Kruskal算法

    并查集 并查集处理的是集合之间的关系,即‘union' , 'find' .在这种数据类型中,N个不同元素被分成若干个组,每组是一个集合,这种集合叫做分离集合.并查集支持查找一个元素所属的集合和两个元 ...

  6. CDH简易离线部署文档

        CDH 离线简易部署文档       文档说明 本文为开发部署文档,生产环境需做相应调整. 以下操作尽量在root用户下操作,避免权限问题. 目录 文档说明 2 文档修改历史记录 2 目录 3 ...

  7. 从CSDN到cnblogs

    博客热的年代,我也赶潮流,开了不少,以前的blogbus博客大巴,CSDN,以及MSN space,再到新浪博客,微博... 提笔写的热情越来越少,这次准备重新整理以前在CSTQB.业界分享的一些内容 ...

  8. PAT1027:Colors In Mars

    1027. Colors in Mars (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue People ...

  9. Ajax+Spring MVC实现跨域请求(JSONP)(转)

    背景: AJAX向后台(springmvc)发送请求,报错:已阻止交叉源请求:同源策略不允许读取 http://127.0.0.1:8080/DevInfoWeb/getJsonp 上的远程资源.可 ...

  10. 在webpack里使用jquery.mCustomScrollbar插件

    malihu-custom-scrollbar-plugin是一个依赖jquery的自定义网页滚动条样式插件 网站:http://manos.malihu.gr/jquery-custom-conte ...