[Python]Requests: Invalid Header Name 解決方法

這幾天在練習python,而且用到了Requests,不得不說真的比urllib 方便了不少啊,簡直有點事半功倍的感受  html

言歸正傳,(好像上面的話也沒多歪啦~~~~~)python

 

簡單敘述下個人script 流程: 從list中讀取URL、Header、Data ,而後由Requests發送出去url

在此過程當中出現了 spa

 

1  Traceback (most recent call last):
2  
3 ····························
4 
5  raise InvalidHeader("Invalid return character or leading space in header: %s" % name)
6 requests.exceptions.InvalidHeader: Invalid return character or leading space in header: Accept-Encoding

關鍵在於最後一句,意思我相信你們都是能看懂的,可是確定有人像我同樣,無法一會兒反應過來。code

 

就像這個錯誤所說的,咱們定義的這個header的accept-encoding並非一個有效的HTTP header name ,htm

那麼我是怎麼定義的呢?以下:blog

'Accept-Encoding': ' gzip,deflate',

乍一看好像沒有什麼問題,實際上,我在gzip以前多敲了一個空格,這個就是問題的所在了。ip


根據HTTP/2協議RFC 7540https://tools.ietf.org/html/rfc7540get

對於Header部分的敘述,總的來講,在header name部分,有諸如空格、冒號之類的,是不被HTTP protocol 標準承認的。requests

綜上,將代碼改成:

'Accept-Encoding': 'gzip,deflate',

可解決問題。

相關文章
相關標籤/搜索