Python:对 base64 字符串进行编码以将其放在 headers 上

Python: Encode base64 string to put it on headers

我正在使用此代码进行编码 user_name 和密码并将其放入 headers。

def login_as_user(self,user):
    encode_login = base64.b64encode(bytes(str(user['email'] + ":" +user['password']),'utf8'))
    headers = { Config.API_AUTHORIZATION:"Basic "+str(encode_login)}
    response = requests.requestd("POST", self.url_path , data="", headers=headers)
    return response

随着

user_name = test@test.com and password = 1.

当我将 encode_login 转换为 str 时,输出总是 b'dGVzdEB0ZXN0LmNvbTox' ,然后当转换为字符串时,它包括 b'。这使得我的 headers 请求时出错。

请帮忙,我该如何解决这个问题?谢谢

您可以使用 decode().

将数据简单地解码为 UTF8

例如,如果您的变量是:

a = b'dGVzdEB0ZXN0LmNvbTox'
# Or:
# a = a.decode('UTF8') 
a = a.decode()
print(a)

输出:

>> 'dGVzdEB0ZXN0LmNvbTox'

否则,这将打印:

base64.b64encode(bytes("hello", 'utf8')).decode()
>>> 'aGVsbG8='

所以,在你的问题中,你只需修改这一行:

headers = { Config.API_AUTHORIZATION:"Basic " + str(encode_login)}

作者:

headers = { Config.API_AUTHORIZATION:"Basic " + encode_login.decode()}