http chunked 理解
https://imququ.com/post/transfer-encoding-header-in-http.html
#! /usr/bin/python
#coding:utf8 import socket
import signal
import errno from time import sleep def sig_handler(signo, frame):
print "get signo ", signo
global runFlg
runFlg = False
global listeningFd
listeningFd.shutdown(socket.SHUT_RD) def http_response_with_content_length(sock):
""" 有长度没有 close """
sock.send('HTTP/1.1 200 OK\r\n')
sock.send('Content-Length: 12\r\n')
sock.send('\r\n')
sock.send('Hello World!') def http_response_with_close(sock):
"""" 没有长度有 close """
sock.send('HTTP/1.1 200 OK\r\n')
sock.send('\r\n')
sock.send('Hello World!')
sock.close() def http_response_chunked(sock):
"""" 没有长度,没有 close """
sock.send('HTTP/1.1 200 OK\r\n')
sock.send('Transfer-Encoding: chunked\r\n')
sock.send('\r\n') # 第一个 chunk
sock.send('a\r\n')
sock.send('1234567890\r\n') # 第二个 chunk
sock.send('5\r\n')
sock.send('12345\r\n') # 第三个 chunk,也是最后一个
sock.send('0\r\n')
sock.send('\r\n') def http_response(sock):
"""" 没有长度,没有 close """
sock.send('HTTP/1.1 200 OK\r\n')
sock.send('\r\n')
sock.send('Hello World!') signal.signal(signal.SIGINT, sig_handler) HOST = "127.0.0.1"
PORT = 37001 listeningFd = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listeningFd.bind((HOST, PORT))
listeningFd.listen(2) print "HttpServer Started" runFlg = True
while runFlg:
try:
connectedFd, addr = listeningFd.accept()
except socket.error as e:
if e.errno == errno.EINT:
print "get a except EINTR"
else:
raise
continue if runFlg == False:
break print "connected by ", addr data = connectedFd.recv(1024)
if not data:
break
print data
#http_response_with_close(connectedFd) # 流量器能正确处理
#http_response(connectedFd) # 浏览器不能正确处理 pending
#http_response_with_content_length(connectedFd) # 浏览器能正确处理
http_response_chunked(connectedFd) # 浏览器能正确处理
else:
print "runFlg ", runFlg print "Done"
http chunked 理解的更多相关文章
- 全面理解HTTP
URL与URI 我们经常接触到的就是URL了,它就是我们访问web的一个字符串地址,那么URI是什么呢?他们是什么关系呢? URL:uniform resource location 统一资源定位符U ...
- 【云计算】docker的小知识,帮你更深入理解容器技术
关于docker的15个小tip 1. 获取最近运行容器的id 这是我们经常会用到的一个操作,按照官方示例,你可以这样做(环境ubuntu): $ ID=$(docker run ubuntu e ...
- 取消掉Transfer-Encoding:chunked
先说解决方法:::不让服务器返回Transfer-Encoding:chunked,在客户端请求的时候可以使用http 1.0的协议. 有时候,Web服务器生成HTTP Response是无法在Hea ...
- HTTP协议理解与应用总结
总结了自己在实际工作场景中遇到的与http协议相关的一些内容的理解. Request & Response Request格式 <request-line> 比如:GET /api ...
- jsonp与cors跨域的一些理解(转)
CORS其实出现时间不短了,它在维基百科上的定义是:跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源.而这种访问是被同源策略所禁止的. ...
- 爬虫入门系列(一):快速理解HTTP协议
4月份给自己挖一个爬虫系列的坑,主要涉及HTTP 协议.正则表达式.爬虫框架 Scrapy.消息队列.数据库等内容. 爬虫的基本原理是模拟浏览器进行 HTTP 请求,理解 HTTP 协议是写爬虫的必备 ...
- 转 node.js里面的http模块深入理解
问题1:HTTP服务继承了TCP服务模型,是从connection为单位的服务到以request为单位的服务的封装,那么request事件何时触发? 注意:在开启keepalive后,一个TCP会话可 ...
- 前端教程(1)http协议的深刻理解
一 HTTP协议简介 作为学习前端开发的开始,我们必须搞明白以下几件事 1.什么是互联网 互联网=物理连接介质+互联网协议 2.互联网建立的目的? 数据传输打破地域限制,否则的话,我 ...
- 深入理解OkHttp源码(三)——网络操作
这篇博客侧重于了解OkHttp的网络部分,包括Socket的创建.连接,连接池等要点.OkHttp对Socket的流操作使用了Okio进行了封装,本篇博客不做介绍,想了解的朋友可以参考拆轮子系列:拆O ...
随机推荐
- vs2013 安装 mvc5 的方法
工具-->NuGet程序包管理器-->程序包管理器控制台 然后 PM>Install-Package Microsoft.AspNet.Mvc -Version 5.0.0
- 暑期训练狂刷系列——poj 3468 A Simple Problem with Integers (线段树+区间更新)
题目连接: http://poj.org/problem?id=3468 题目大意: 给出n个数,有两种操作: 1:"C a b c",[a,b]中的每一个数都加上c. 2:&qu ...
- 51nod 1154 回文串划分
1154 回文串划分 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 有一个字符串S,求S最少可以被划分为多少个回文串. 例如:abbaabaa,有 ...
- DP + 概率 + 贪心 UVA 1456 Cellular Network
题目传送门 题意:(摘自LRJ<训练指南>) 手机在蜂窝网络中的定位是一个基本问题.假设蜂窝网络已经得知手机处于c1, c2,…,cn这些区域中的一个,最简单的方法是同时在这些区域中寻找手 ...
- 尺取法 POJ 3601 Subsequence
题目传送门 /* 题意:求连续子序列的和不小于s的长度的最小值 尺取法:对数组保存一组下标(起点,终点),使用两端点得到答案 1. 记录前i项的总和,求[i, p)长度的最小值,用二分找到sum[p] ...
- 1、IO概述及File类
- ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第五天(非原创)
文章大纲 一.课程介绍二.前台系统(门户系统)搭建介绍三.前台系统(门户系统)搭建实战四.js请求跨域解决五.项目源码与资料下载六.参考文章 一.课程介绍 一共14天课程(1)第一天:电商行业的背 ...
- 机器学习-Logistic function(Sigmoid function)
下面给出H函数 由这个函数生成的曲线称为Sigmoid曲线 先不从数学上说为什么这个模型中二元分类上比线性模型好,单纯从图形上看就可以得到直观的结论 首先Y值域在[0,1],其次图形中中间陡峭而两 ...
- 请大家帮我找一找bug —— 一个MySQL解析程序(JAVA实现)
周末两天我写了一个MySQLParser.写这个东西的目的是:公司的一个项目中需要对数据打版本号(每个表的每条记录要有一个版本号字段,这个字段需要由框架自动打上去,而不是由程序员来做). 所以,我写的 ...
- Objective-C Memory Management Being Exceptional 异常处理与内存
Objective-C Memory Management Being Exceptional 异常处理与内存 3.1Cocoa requires that all exceptions mu ...