class BaseHTTPRequestHandler(socketserver.StreamRequestHandler)

HTTP request handler base class.
 |  
 |  The following explanation of HTTP serves to guide you through the
 |  code as well as to expose any misunderstandings I may have about
 |  HTTP (so you don't need to read the code to figure out I'm wrong
 |  :-).
 |  
 |  HTTP (HyperText Transfer Protocol) is an extensible protocol on
 |  top of a reliable stream transport (e.g. TCP/IP).  The protocol
 |  recognizes three parts to a request:
 |  
 |  1. One line identifying the request type and path
 |  2. An optional set of RFC-822-style headers
 |  3. An optional data part
 |  
 |  The headers and data are separated by a blank line.
 |  
 |  The first line of the request has the form
 |  
 |  <command> <path> <version>
 |  
 |  where <command> is a (case-sensitive) keyword such as GET or POST,
 |  <path> is a string containing path information for the request,
 |  and <version> should be the string "HTTP/1.0" or "HTTP/1.1".
 |  <path> is encoded using the URL encoding scheme (using %xx to signify
 |  the ASCII character with hex code xx).
 |  
 |  The specification specifies that lines are separated by CRLF but
 |  for compatibility with the widest range of clients recommends
 |  servers also handle LF.  Similarly, whitespace in the request line
 |  is treated sensibly (allowing multiple spaces between components
 |  and allowing trailing whitespace).
 |  
 |  Similarly, for output, lines ought to be separated by CRLF pairs
 |  but most clients grok LF characters just fine.
 |  
 |  If the first line of the request has the form

|  <command> <path>
 |  
 |  (i.e. <version> is left out) then this is assumed to be an HTTP
 |  0.9 request; this form has no optional headers and data part and
 |  the reply consists of just the data.
 |  
 |  The reply form of the HTTP 1.x protocol again has three parts:
 |  
 |  1. One line giving the response code
 |  2. An optional set of RFC-822-style headers
 |  3. The data
 |  
 |  Again, the headers and data are separated by a blank line.
 |  
 |  The response code line has the form
 |  
 |  <version> <responsecode> <responsestring>
 |  
 |  where <version> is the protocol version ("HTTP/1.0" or "HTTP/1.1"),
 |  <responsecode> is a 3-digit response code indicating success or
 |  failure of the request, and <responsestring> is an optional
 |  human-readable string explaining what the response code means.
 |  
 |  This server parses the request and the headers, and then calls a
 |  function specific to the request type (<command>).  Specifically,
 |  a request SPAM will be handled by a method do_SPAM().  If no
 |  such method exists the server sends an error response to the
 |  client.  If it exists, it is called with no arguments:
 |  
 |  do_SPAM()
 |  
 |  Note that the request name is case sensitive (i.e. SPAM and spam
 |  are different requests).
 
 |  The various request details are stored in instance variables:
 |  
 |  - client_address is the client IP address in the form (host,
 |  port);
 |  
 |  - command, path and version are the broken-down request line;
 |  
 |  - headers is an instance of email.message.Message (or a derived
 |  class) containing the header information;
 |  
 |  - rfile is a file object open for reading positioned at the
 |  start of the optional input data part;
 |  
 |  - wfile is a file object open for writing.
 |  
 |  IT IS IMPORTANT TO ADHERE TO THE PROTOCOL FOR WRITING!
 |  
 |  The first thing to be written must be the response line.  Then
 |  follow 0 or more header lines, then a blank line, and then the
 |  actual data (if any).  The meaning of the header lines depends on
 |  the command executed by the server; in most cases, when data is
 |  returned, there should be at least one header line of the form
 |  
 |  Content-type: <type>/<subtype>
 |  
 |  where <type> and <subtype> should be registered MIME types,
 |  e.g. "text/html" or "text/plain".
 |  
 |  Method resolution order:
 |      BaseHTTPRequestHandler
 |      socketserver.StreamRequestHandler
 |      socketserver.BaseRequestHandler
 |      builtins.object

Python——Baseequestandler class (Interesting found in python‘s document)的更多相关文章

  1. python之路(sed,函数,三元运算)

    python之路(sed,函数,三元运算) 一.sed集合 1.set无序,不重复序列 2.创建 se = {11,22,33,33,44} list() #只要是一个类加上()自动执行 list _ ...

  2. 趣闻|Python之禅(The Zen of Python)

    在Python解释器中输入“import this”会发生什么?如果你不知道这个彩蛋,推荐继续阅读这篇文章. 2001年秋,Foretec(一家会议组织公司)正在准备召开第十届Internationa ...

  3. python bottle框架(WEB开发、运维开发)教程

    教程目录 一:python基础(略,基础还是自己看书学吧) 二:bottle基础 python bottle web框架简介 python bottle 框架环境安装 python bottle 框架 ...

  4. python笔记六(函数的参数、返回值)

    一 调用函数 在写函数之前,我们先尝试调用现有的函数 >>> abs(-9) 9 除此之外,还有我们之前使用的len()等.可以用于数据类型转换的 int() float() str ...

  5. Python协程(真才实学,想学的进来)

    真正有知识的人的成长过程,就像麦穗的成长过程:麦穗空的时候,麦子长得很快,麦穗骄傲地高高昂起,但是,麦穗成熟饱满时,它们开始谦虚,垂下麦芒. --蒙田<蒙田随笔全集> *** 上篇论述了关 ...

  6. Python实现HMM(隐马尔可夫模型)

    1. 前言 隐马尔科夫HMM模型是一类重要的机器学习方法,其主要用于序列数据的分析,广泛应用于语音识别.文本翻译.序列预测.中文分词等多个领域.虽然近年来,由于RNN等深度学习方法的发展,HMM模型逐 ...

  7. python基础——13(系统、时间、序列化模块)

    一.时间模块 1.标准库time %y 两位数的年份表示(00-99) %Y 四位数的年份表示(0000-9999) %m 月份(01-12) %d 月中的一天(0-31) %H 24小时制小时数(0 ...

  8. 以股票RSI指标为例,学习Python发送邮件功能(含RSI指标确定卖点策略)

    本人之前写过若干“给程序员加财商”的系列文,目的是通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得. 在之前的系列文里,大家能看到K线,均线,成交 ...

  9. 12、Python函数高级(命名空间、作用域、装饰器)

    一.名称空间和作用域 1.命名空间(Namespace) 命名空间是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的. 命名空间提供了在项目中避免名字冲突的一种方法.各个命名空 ...

随机推荐

  1. MBProgressHUD自定义视图大小的修改

    MBProgressHUD 一款简单易用的弹窗,但是在使用中难免使用自定义view即customView,此时会发现HUD的弹窗大小和你image的大小是一样的无论你怎么修改frame也没有用,此时你 ...

  2. 转载] magento 产品数据表结构

    原文地址:http://blog.sina.com.cn/s/blog_9302097a010120l4.html 数据库-- 产品数据库表结构分析 product 1数据库实体表:catalog_p ...

  3. CF GukiZ hates Boxes 【二分+贪心】

    Professor GukiZ is concerned about making his way to school, because massive piles of boxes are bloc ...

  4. POJ 1321 棋盘问题 (DFS + 回溯)

    题目链接:http://poj.org/problem?id=1321 题意:中文题目,就不多说了...... 思路: 解题方法挺多,刚开始想的是先从N行中选择出来含有“#”的K行,再在这K行中放置K ...

  5. 训练指南 UVALive - 3415(最大点独立集)

    layout: post title: 训练指南 UVALive - 3415(最大点独立集) author: "luowentaoaa" catalog: true mathja ...

  6. next_permutatio

    next_permutation的函数声明:#include  <algorithm> bool next_permutation( iterator start, iterator en ...

  7. noi题库 1.7 字符串

    前九题 01:统计数字字符个数 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一行字符,统计出其中数字字符的个数. 输入 一行字符串,总长度不超过255. 输出 输出为1行,输出字 ...

  8. 【动态规划】矩形嵌套 (DGA上的动态规划)

    [动态规划]矩形嵌套 时间限制: 1 Sec  内存限制: 128 MB提交: 23  解决: 9[提交][状态][讨论版] 题目描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a, ...

  9. ( 转 ) mysql复合索引、普通索引总结

    对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合 ...

  10. Mybatis全部标签

    一.定义SQL语句 (1)select 标签的使用 属性介绍: id :唯一的标识符. parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user ...