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


這幾天在練習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 7540https://tools.ietf.org/html/rfc7540

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

綜上,將代碼改為:

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

可解決問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM