سؤال

تعديل:

هذا السؤال غير صالح. اتضح وكيل شفاف كان يرتكب طلب HTTP 1.0 فصاعدا على الرغم من أن Urllib / httplib كان بالفعل إصدار طلب HTTP 1.1 في الأصل.

السؤال الأصلي:

بشكل افتراضي urllib2.urlopen دائما يجعل طلب HTTP 1.0.

هل هناك أي طريقة للحصول عليه لتحدث HTTP 1.1؟

هل كانت مفيدة؟

المحلول

لماذا تعتقد أنه لا يستخدم بالفعل HTTP 1.1؟ هل جربت شيئا مثل ...:

>>> import urllib2
>>> urllib2._opener.handlers[1].set_http_debuglevel(100)
>>> urllib2.urlopen('http://mit.edu').read()[:10]
connect: (mit.edu, 80)
send: 'GET / HTTP/1.1

(الخ، إلخ)؟ هذا يجب أن يظهر أنه يرسل طلب 1.1 الحصول على طلب بالفعل.

نصائح أخرى

يستخدم Urllib2 HTTPLIB لجعل طلبات HTTP. يستخدم Python 2.6.4 بالتأكيد HTTP / 1.1 في HTTPLIB، على الرغم من أنه يمكنه التعامل مع الردود من خادم 1.1 أو 1.0 أو 0.9. بقدر ما يصل إلى 2.3، يبدو أن هذا هو الحال (وربما العودة إلى 1.5)

ومع ذلك، إذا كانت هناك حاجة إلى نفق من خلال وكيل، فسوف يرسل طلبا مثل هذا:

CONNECT host:port HTTP/1.0

وهذه سلسلة / 1.0 مشفرة بشدة.

ما إصدار Python الذي تستخدمه، وكيف تستخدم Urllib2؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top