這幾天在練習python,並且用到了Requests,不得不說真的比urllib 方便了很多啊,簡直有點事半功倍的感覺
言歸正傳,(好像上面的話也沒多歪啦~~~~~)
簡單敘述下我的script 流程: 從list中讀取URL、Header、Data ,然后由Requests發送出去
在此過程中出現了
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
關鍵在於最后一句,意思我相信大家都是能看懂的,但是肯定有人像我一樣,沒法一下子反應過來。
就像這個錯誤所說的,我們定義的這個header的accept-encoding並不是一個有效的HTTP header name ,
那么我是怎么定義的呢?如下:
'Accept-Encoding': ' gzip,deflate',
乍一看好像沒有什么問題,實際上,我在gzip之前多敲了一個空格,這個就是問題的所在了。
根據HTTP/2協議RFC 7540:https://tools.ietf.org/html/rfc7540
對於Header部分的敘述,總的來說,在header name部分,有諸如空格、冒號之類的,是不被HTTP protocol 標准認可的。
綜上,將代碼改為:
'Accept-Encoding': 'gzip,deflate',
可解決問題。