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 理解的更多相关文章

  1. 全面理解HTTP

    URL与URI 我们经常接触到的就是URL了,它就是我们访问web的一个字符串地址,那么URI是什么呢?他们是什么关系呢? URL:uniform resource location 统一资源定位符U ...

  2. 【云计算】docker的小知识,帮你更深入理解容器技术

    关于docker的15个小tip   1. 获取最近运行容器的id 这是我们经常会用到的一个操作,按照官方示例,你可以这样做(环境ubuntu): $ ID=$(docker run ubuntu e ...

  3. 取消掉Transfer-Encoding:chunked

    先说解决方法:::不让服务器返回Transfer-Encoding:chunked,在客户端请求的时候可以使用http 1.0的协议. 有时候,Web服务器生成HTTP Response是无法在Hea ...

  4. HTTP协议理解与应用总结

    总结了自己在实际工作场景中遇到的与http协议相关的一些内容的理解. Request & Response Request格式 <request-line> 比如:GET /api ...

  5. jsonp与cors跨域的一些理解(转)

    CORS其实出现时间不短了,它在维基百科上的定义是:跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源.而这种访问是被同源策略所禁止的. ...

  6. 爬虫入门系列(一):快速理解HTTP协议

    4月份给自己挖一个爬虫系列的坑,主要涉及HTTP 协议.正则表达式.爬虫框架 Scrapy.消息队列.数据库等内容. 爬虫的基本原理是模拟浏览器进行 HTTP 请求,理解 HTTP 协议是写爬虫的必备 ...

  7. 转 node.js里面的http模块深入理解

    问题1:HTTP服务继承了TCP服务模型,是从connection为单位的服务到以request为单位的服务的封装,那么request事件何时触发? 注意:在开启keepalive后,一个TCP会话可 ...

  8. 前端教程(1)http协议的深刻理解

    一 HTTP协议简介 作为学习前端开发的开始,我们必须搞明白以下几件事 1.什么是互联网      互联网=物理连接介质+互联网协议     2.互联网建立的目的? 数据传输打破地域限制,否则的话,我 ...

  9. 深入理解OkHttp源码(三)——网络操作

    这篇博客侧重于了解OkHttp的网络部分,包括Socket的创建.连接,连接池等要点.OkHttp对Socket的流操作使用了Okio进行了封装,本篇博客不做介绍,想了解的朋友可以参考拆轮子系列:拆O ...

随机推荐

  1. Java知识点脑图

    做服务器开发有十几年了,其中大部分用到的都是Java服务器开发,从JDK1.4到现在的JDK1.8,从基本的Java Application到 J2EE(JBOSS,Glassfish),OSGI,到 ...

  2. python爬虫之requests+selenium+BeautifulSoup

    前言: 环境配置:windows64.python3.4 requests库基本操作: 1.安装:pip install requests 2.功能:使用 requests 发送网络请求,可以实现跟浏 ...

  3. jQuery查找

    导航查找方法: 向下查找兄弟标签: $().next() $().nextAll() 向上查找兄弟标签: 可以查找所有兄弟标签: 查找子标签 查找父级标签: $().parent() $().pare ...

  4. [POI2007]洪水pow

    Description AKD市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD市全被水淹没了.Blue Mary,AKD市的市长,召集了他的所有顾问(包括你)参加一个紧急会议.经过细致的商 ...

  5. java问题收集

    2014-10-27 构造器最好保留一个无参的,否则一些框架调用初始化时,会报错     星期三,2013年11月6日 volatile关键字 : 1. 与synchronized几乎相同,但是vol ...

  6. 【学习笔记】SIFT尺度不变特征 (配合UCF-CRCV课程视频)

    SIFT尺度不变特征 D. Lowe. Distinctive image features from scale-invariant key points, IJCV 2004 -Lecture 0 ...

  7. Windows 7下如何在Cygwin下正确安装Tcpreplay(图文详解)

    可以在大家安装的Cygwin的安装目录下执行(我的这里是D:\SoftWare\cygwin) #winpcap的安装过程:|$ unzip WpdPack_4_1_2.zip|$ cp -r Wpd ...

  8. AJPFX对equals()方法和==异同的比较

    equals()方法是Object类的方法,所有的类都集成了此方法,还有部分类重写了这个方法,我们看一下Object类中关于该方法的的源码: public boolean equals(Object ...

  9. 关于使用myeclipse搭建tomcat环境运行web项目的方法

    这两天准备改同事的一个系统的自适应,然而我没想到的是我竟然在打开这个项目上就遇到了困难,真的是too young too simple,究其根本就是了解的太少了,于是为了我不忘记,用博客的方式把它记录 ...

  10. Swiper插件轮播

    <html><head> <meta charset="utf-8"> <title>Swiper轮播</title>& ...