Используя urllib в python 3.6, я создал для него запрос и прикладные заголовки. Тем не менее, Python, похоже, полностью игнорирует эту директиву, и когда я запускаюPython: request.has_header (header) всегда возвращает false
req.has_header('Content-Type')
результат неверный. Это относится и к другим заголовкам, кроме «Connection». Интересно, что «connection» также возвращает false. Я не смог найти хороший ресурс для того, как точно объявлять заголовки в Python, которые последовательно работают (и Python, по-видимому, очень чувствителен к регистру имен заголовков), поэтому, если у кого-то есть какие-либо рекомендации, мне было бы интересно их услышать !
Мой Актуальной является:
head = {
'content-type': 'application/x-www-form-urlencoded',
'connection': 'keep-alive',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
}
req = Request(url, post_bytes, head)
print(req.has_header('content-type')
Substitute «Content-Type» для любого из других заданных заголовков и результат все равно ложь. Его почти как запрос python по умолчанию не содержит заголовков, но ... неужели это не так?
Спасибо за понимание!
Это сработало. Я не ожидал, что второе дефисное слово не будет капитализироваться, как первое. В некоторых примерах заголовки с Firebug предположили, что оба слова будут заглавные, но, похоже, это не так для этого приложения. Знаете ли вы, применяется ли чувствительность к регистру при объявлении заголовков? например когда я объявляю head = {'Content-type': ....}? Цените помощь! –
Кажется, заголовки, которые вы объявляете, преобразуются в заголовок с помощью объекта запроса urllib (а не Python). Я не уверен, произойдет ли это до того, как запрос будет отправлен в сети, но я не думаю, что это важно для сервера. –