前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >web框架

web框架

作者头像
小小咸鱼YwY
发布2019-09-11 14:24:44
1K0
发布2019-09-11 14:24:44
举报
文章被收录于专栏:python-爬虫

08.07自我总结

一.web框架

1.web应用的本质

1.socket网络编程
  • 架构:C/S架构
  • 协议:TCP/UDP协议
  • 传输层
2.web应用
  • 架构:B/S架构
  • 协议:Http协议
  • 应用层

二.http协议组成

请求头\r\n\r\n请求体

响应头\r\n\r\n响应体

关于请求头里的常用相关参数

浏览器支持的内容

  • Accept :告诉服务端 客户端接受什么类型的响应。
  • Accept-Charset:浏览器可接受的字符集
  • Accept-Encoding:浏览器能够进行解码的数据编码方式
  • Accept-Language:浏览器所希望的语言种类

重要的交互参数

  • Cookie :客户端的Cookie就是通过这个报文头属性传给服务端的后台
  • Referer :表示这个请求是从哪个URL过来的
  • Host:初始URL中的主机和端口
  • Cache-Control 对缓存进行控制
  • User-Agent:发起请求的来源

其他参数

  • If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答;
  • Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝;
  • UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型.
  • Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中;
  • Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小;
  • Content-Length:表示请求消息正文的长度

关于响应头里的常用相关参数

Header

解释

示例

Accept-Ranges

表明服务器是否支持指定范围请求及哪种类型的分段请求

Accept-Ranges: bytes

Age

从原始服务器到代理缓存形成的估算时间(以秒计,非负)

Age: 12

Allow

对某网络资源的有效的请求行为,不允许则返回405

Allow: GET, HEAD

Cache-Control

告诉所有的缓存机制是否可以缓存及哪种类型

Cache-Control: no-cache

Content-Encoding

web服务器支持的返回内容压缩编码类型。

Content-Encoding: gzip

Content-Language

响应体的语言

Content-Language: en,zh

Content-Length

响应体的长度

Content-Length: 348

Content-Location

请求资源可替代的备用的另一地址

Content-Location: /index.htm

Content-MD5

返回资源的MD5校验值

Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==

Content-Range

在整个返回体中本部分的字节位置

Content-Range: bytes 21010-47021/47022

Content-Type

返回内容的MIME类型

Content-Type: text/html; charset=utf-8

Date

原始服务器消息发出的时间

Date: Tue, 15 Nov 2010 08:12:31 GMT

ETag

请求变量的实体标签的当前值

ETag: “737060cd8c284d8af7ad3082f209582d”

Expires

响应过期的日期和时间

Expires: Thu, 01 Dec 2010 16:00:00 GMT

Last-Modified

请求资源的最后修改时间

Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT

Location

用来重定向接收方到非请求URL的位置来完成请求或标识新的资源

Location: http://www.zcmhi.com/archives/94.html

Pragma

包括实现特定的指令,它可应用到响应链上的任何接收方

Pragma: no-cache

Proxy-Authenticate

它指出认证方案和可应用到代理的该URL上的参数

Proxy-Authenticate: Basic

refresh

应用于重定向或一个新的资源被创造,在5秒之后重定向(由网景提出,被大部分浏览器支持)

Refresh: 5; url=http://www.atool.org/httptest.php

Retry-After

如果实体暂时不可取,通知客户端在指定时间之后再次尝试

Retry-After: 120

Server

web服务器软件名称

Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)

Set-Cookie

设置Http Cookie

Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1

Trailer

指出头域在分块传输编码的尾部存在

Trailer: Max-Forwards

Transfer-Encoding

文件传输编码

Transfer-Encoding:chunked

Vary

告诉下游代理是使用缓存响应还是从原始服务器请求

Vary: *

Via

告知代理客户端响应是通过哪里发送的

Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)

Warning

警告实体可能存在的问题

Warning: 199 Miscellaneous warning

WWW-Authenticate

表明客户端请求实体应该使用的授权方案

WWW-Authenticate: Basic

X-Powered-By

由语言解析器或者应用程序框架输出的,这个值的意义用于告知网站是用何种语言或框架编写的

X-Powered-By: ASP.NET

响应行书写

版本协议+响应码+附加信息\r\n\r\n响应体

如:HTTP/1.1 200 OK\r\n\r\n响应体

响应码

  • 1xx:提示信息,表示请求已接收
  • 2XX:响应成功
  • 3xx:响应需要定向(重新记载链接第三方链接)
  • 4xx:客户端错误
  • 5xx:服务器端错误

常用响应码

  • 200:成功
  • 404;请求内容不存在
  • 401:没有访问权限
  • 500:服务器未知错误
  • 503: 服务器暂时无法执行

三.写web框架的三步骤

  • 第一步:写socket服务端
  • 第二步:路由系统:url ====》 函数
  • 第三步:模板引擎渲染:自定义规则主要是将里面的内容进行替换有顶俗称html模板如果不在不引入地方的情况下修改的内容会@内容@放置给后面参数进行渲染,也可以使用第三方jinja2进行渲染

按照上述步骤进行分类可以分成三类

  • 以上三步都不采用第三方例如-->tornado
  • 第一步引入第三方如--> django (wsgiref/uwsgi)
  • 第一步与第三步引用第三方如-->flask

四.手写web框架简单案例

代码语言:javascript
复制
import socket
import re
server = socket.socket()
server.bind(('127.0.0.1',8080))
server.listen(5)

while True:
    conn,adder = server.accept()
    a = conn.recv(8888)
    data = str(a,encoding='utf8')
    print(data)
    conn.send(bytes('HTTP/1.1 200 OK\r\n\r\n',encoding='utf8'))
    conn.send(bytes('ywy',encoding='utf8'))
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 08.07自我总结
    • 一.web框架
      • 1.web应用的本质
    • 二.http协议组成
      • 关于请求头里的常用相关参数
      • 关于响应头里的常用相关参数
      • 响应行书写
    • 三.写web框架的三步骤
      • 四.手写web框架简单案例
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档