socket编写HTTP response header的一个小问题

news/2024/7/3 17:40:37 标签: 网络, python

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

  怎么用socket编程编写一个HTTP response header?其实没什么特别的,只要了解HTTP response header的构成就行。关于HTTP request/response header的fields的介绍和详解——http://my.oschina.net/Bruce370/admin/new-blog 既有解释又有例子,很好的一个博客。

举个例子,我正在写的一个程序:

strcpy(s_header, "HTTP/1.1 200 Ok\r\nConnection: close\r\n");//必须以HTTP协议版本和状态码开头,其他的field顺序不重要
strcat(s_header, "Content-Type:text/html; charset=utf-8\r\nContent-Length:");//我打算发个html文件给客户端,所以Content-Type:text/html
itoa(fp_len, fp_len_char, 10);//fp_len_char是个字符串,存放html文件的长度
strcat(s_header, fp_len_char);
strcat(s_header, "\r\n");
strcat(s_header, s_buffer);//s_buffer是html文件读取后所在的buffer



HTTP  header 是以text明文形式进行编写的。


接下来说说遇到的问题——

在firefox上测试连接了我的server,可以成功接收到html文件并成功打开网页;

但是在Chrome上,却只能看见网页一直是一片空白,小圆圈一直转,最后显示没有接收到任何回复。

打开网页信息控制台(快捷键 ctrl+shift+j)后发现,显示以下错误

错误信息 net::ERR_CONTENT_LENGTH_MISMATCH

意思是,HTTP response header提供的内容长度信息和Chrome实际收到的不一致,因此浏览器将其判定为不合法的包,不进行显示。

网上查找之后,在stackoverflow里发现一些答案——



即浏览器的一些代理插件或者去广告工具可能导致修改了包的一些内容,但是并没有更改Header里Content Length的值,导致这种情况发生·······

我最后的解决办法就是·····················把Content Length这个属性去掉!于是成功debug~

(题外话,HTTP response Header 里,除了协议版本号和状态码,其他属性基本都不是一定要写的···stackoverflow里找到的一个帖子—— http://stackoverflow.com/questions/4726515/what-http-response-headers-are-required)

转载于:https://my.oschina.net/Bruce370/blog/391040


http://www.niftyadmin.cn/n/1129068.html

相关文章

邂逅物联网

如果说,我们的生产、生活中被“物联网”包围,相信很多人会纠正。“是被‘互联网’包围,不是‘物联网’吧?!”互联网的发展长期处于“风口浪尖”,尤其是移动互联网的崛起,让人们获取信息渠道、处…

如何在微信小程序中使用WeUI组件库

WeUI组件库是一套基于样式库weui-wxss开发的小程序扩展组件库,同微信原生视觉体验一致。 在全局配置中引入WeUI 在小程序全局配置文件app.json中以扩展库的形式引入WeUI,相当于引入了对应扩展库最新版本的npm包,同时不占用小程序的包体积。…

为什么要用RAID卡

为什么要用RAID卡,它有什么优势 那些需要在硬盘上保存大量数据的人(例如 一个普通的管理人员) ,采用 RAID 技术将会很方便。采用 RAID 的主要原因是: 1 增强了速度 2 扩容了存储能力(以及更多的便利) 3可高效恢复磁盘 RAID卡采用卡上专用的微处理来所有…

开启数据智慧,阿里云大数据团队调研高新区

原文链接:http://click.aliyun.com/m/13874/ 2月15日,阿里云大数据公司调研组来到高新区,进行为期三天的大数据产业发展情况调研活动。高新区分管领导、市工商联副主席及职能部门参加了此次调研活动。调研组一行首先走访了大全集团和威腾集团…

论程序员与妓女

1,程序界的高手通常很讨厌微软,妓女界的高手嗯。。这个。。恐怕也如此 2,都是吃青春饭,不过到人老猪黄后,凭着混个脸熟,程序员可以混个管理员,妓女也行,不过俗称老鸨 3&…

最好用图像处理库CxImage入门

2019独角兽企业重金招聘Python工程师标准>>> CxImage是一款免费的、开源的、功能强大的图形处理库。跨平台,支持windows、linux等;支持BMP、GIF、ICO、TGA、JPEG、PCX、PNG、TIFF、MNG、RAS等多种图像格式;支持格式转换、图像处理…

我们使用RAID技术的原因:

RAID 我们使用RAID技术的原因:(a)传输速率高 在RAID中,由于多个磁盘驱动器可以同时并行传输数据,而这些磁盘驱动器在逻辑上又呈现为一个磁盘驱动器,以便于操作系统管理。所以使用RAID可以达到几倍、几十倍,甚至上百…

关于C++类型检查的一点小挫折

问题:定义了一个float型数组Lut[],我让一个整型指针指向数组名int * Addresslut ;VS2008报错:error C2440: : cannot convert from float [256] to int * 疑问:貌似在我C语言中,不止一次听过…