Requests报”requests.exceptions.InvalidHeader: Invalid return character or leading space in header: {header} “的原因以及解决办法

  • Post category:Python

这个错误通常是由于请求的头文件中出现了无效的字符,如换行符或前导空格。这可能是由于代码中的错误、编辑器中的错误或复制粘贴过程中的错误引起的。

要解决这个问题,可以尝试以下几种方法:

  1. 检查请求头文件中的错误

请仔细检查请求头文件中是否存在错误,并确保没有无效的字符或换行符。可以尝试在编辑器中查看文本视图,以确定是否存在任何无效的字符。

  1. 使用trim方法删除无效字符

如果您使用的是带有空格或换行符的变量另外提供了参数值,那可以使用Python中的strip方法或trim方法来删除收尾空格。

示例代码:

import requests

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36\r\n'}
url = 'https://www.example.com'

response = requests.get(url, headers=headers)

在上面的代码中,利用 Python 预处理 requests 中传递的 headers 参数,对收尾多余的空格符和回车换行符剔除。

  1. 使用字符串转义

对于某些需要特殊字符(如单引号,双引号,回车等)的请求头部信息,可以使用字符串转义方法进行转义。

示例代码:

import requests

headers = {"Content-Type": "application/json", "Authorization": f"Bearer {SOME_TOKEN}"}

url = "https://api.example.com/"

response = requests.post(url, headers=headers)

在上面的代码中,Authorization 头信息中包含了一个 token 对象。为了避免 token 对象字符串中存在引号字符,使用 f-string 中的大括号将 token 参数括起来,进而不需要给字符串加引号。

  1. 换行符的规范格式

在Linux和window操作系统中有着不同的换行符,这也会引发报错。因此可以在头文件中强制所有的换行符都使用 \r\n 或者 \n 标识。

示例代码:

import requests

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36\r\n'}
url = 'https://www.example.com'

response = requests.get(url, headers=headers)

在上面的代码中, \r\n 可以强制 headers 头所有的换行符都以这种方式表达。

总之,以上的方法应该足够让你解决 requests.exceptions.InvalidHeader: Invalid return character or leading space in header: {header} 错误。