免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 13976 | 回复: 7
打印 上一主题 下一主题

python HTTP header的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-20 15:08 |只看该作者 |倒序浏览
下面有一个HTTP 请求
GET /1.htm HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: localhost:8080
Connection: Keep-Alive

里面的HTTP协议使用的是1.1,(HTTP/1.1), 有什么办法要python 中强制使用HTTP/1.0吗?

我的python中:
headers = {"Accept":"*/*","Accept-Language":"zh-cn".......}一直写到Connection:Keep-Alive

然后connect的时候写的是:
conn.request("GET",url,"", headers)

不知道应该在哪把协议改成HTTP/1.1..


论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2012-09-20 16:42 |只看该作者
翻遍了手册, 发现没有request可以指定http version的地方, 据我目测basehandler可知, 这个属性是默认写死在request类里某个函数里的, 所以除非改库代码, 否则别想.

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
3 [报告]
发表于 2012-09-20 16:44 |只看该作者
当然, 你可以SOCKET直接请求并自己解析应答, 或者去网上搜寻支持这一特性的开源库, 或者只是去看一下Request类, 然后直接继承它, 覆盖对应方法将http/1.1换成http/1.0即可.
linux_c_py_php 发表于 2012-09-20 16:42
翻遍了手册, 发现没有request可以指定http version的地方, 据我目测basehandler可知, 这个属性是默认写死在 ...

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
4 [报告]
发表于 2012-09-23 11:31 |只看该作者
1.1 兼容 1.0 不?

论坛徽章:
0
5 [报告]
发表于 2013-10-07 03:05 |只看该作者
linux_c_py_php 发表于 2012-09-20 16:44
当然, 你可以SOCKET直接请求并自己解析应答, 或者去网上搜寻支持这一特性的开源库, 或者只是去看一下Reques ...

basehandler是神马?

论坛徽章:
0
6 [报告]
发表于 2013-10-07 17:37 |只看该作者
本帖最后由 crifan 于 2013-10-07 17:38 编辑

"有什么办法要python 中强制使用HTTP/1.0吗?"
如果你指的是,用python默认的库,尤其是urllib2的话,那么:
随便去google搜:
python http 1.0
就找到了:
How to send HTTP/1.0 request via urllib2?
的解释:
urllib2,底层用的是httplib
所以可以通过更改http中关于版本的属性,达到使用http 1.0的目的:
  1. import urllib2, httplib
  2. httplib.HTTPConnection._http_vsn = 10
  3. httplib.HTTPConnection._http_vsn_str = 'HTTP/1.0'
  4. print urllib2.urlopen('http://localhost/').read()
复制代码
另:
1.多利用google;
2.技术问题,stackoverflow上面的回答,往往都还是很有参考价值的。

论坛徽章:
0
7 [报告]
发表于 2013-10-08 11:54 |只看该作者
能问一句为啥不用1.1么

论坛徽章:
0
8 [报告]
发表于 2013-12-06 15:02 |只看该作者
这个不错,能解决问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP