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

  • Post category:Python

这个错误表示请求头中出现了不合法的字符,通常是回车或空格等特殊字符造成的。这个错误可以发生在使用Requests库进行HTTP请求时出现。

常见的可能导致该错误的原因包括:

1.请求头中出现非法的换行或空格等特殊字符;
2.请求头中存在不合法的中文字符或其它字符集;
3.请求头中的键值对没有用冒号’: ‘ 分隔;
4.请求头中的键、值出现不合法字符。

以下是几种可能存在的原因和修改办法:

1.请确保请求头中不存在非法字符,可以查看请求头的字符串形式输出,找到非法字符并删除或更改;
2.尽量使用英文字符集,避免使用非ASCII字符,如果实在需要使用非ASCII字符,可以使用urlencode方法将它转换为urlencode编码;
3.检查请求头中的键、值对是否存在不合法的格式,例如键与值之间是否有空格,是否缺少了冒号等;
4.确保请求头中的键、值只包含有效字符集,例如字母、数字、下划线等。

示例代码中的错误请求头如下所示:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 '
                  '(KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
    'Content-type': 'application/json',
    'Accept': 'text/plain',
    'Origin': 'https://www.example.com',
    'Connection': 'keep-alive\n'
}

可以看到,’Connection’: ‘keep-alive\n’ 中出现了换行符,导致了错误。应该将其更改为:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 '
                  '(KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
    'Content-type': 'application/json',
    'Accept': 'text/plain',
    'Origin': 'https://www.example.com',
    'Connection': 'keep-alive'
}

这样就解决了该错误。

总之,遇到此类错误应该检查请求头的各项内容并去除其中不合法的字符,避免出现类似的错误。