Python 如何读取服务器上的Networkings授权标头?

Python 如何读取服务器上的Networkings授权标头?,python,objective-c,ios,security,afnetworking,Python,Objective C,Ios,Security,Afnetworking,我正在尝试使用AFNetworking设置的授权头在Python服务器上进行身份验证。在执行请求之前,我将AFNetworking客户端设置为: // global.globalAFHTTPClient is my AFclient in this case [global.globalAFHTTPClient setAuthorizationHeaderWithUsername:global.userEmail password:global.password]; self.request.

我正在尝试使用AFNetworking设置的授权头在Python服务器上进行身份验证。在执行请求之前,我将AFNetworking客户端设置为:

// global.globalAFHTTPClient is my AFclient in this case
[global.globalAFHTTPClient setAuthorizationHeaderWithUsername:global.userEmail
password:global.password];
self.request.headers['Authorization']
在服务器上,我可以访问如下标题:

// global.globalAFHTTPClient is my AFclient in this case
[global.globalAFHTTPClient setAuthorizationHeaderWithUsername:global.userEmail
password:global.password];
self.request.headers['Authorization']
然后我的问题是,在服务器上,如何从授权头中提取用户名和密码?我需要先解码Base64编码吗?我是否将标题视为字典

这是正确的方法吗

authorizationHeader = self.request.headers['Authorization']
username = authorizationHeader['username']
password = authorizationHeader['password']

你需要先把它解码。在您的示例中,您只需要解码“KG51bGwpOihndWxsKQ==”。这应该解码为一个格式为“username:password”的字符串


可能有一些库可以为您做到这一点,但这取决于您的服务器堆栈。

尝试时发生了什么?标题实际上是什么样子?@kindall这就是标题的样子:“Basic KG51bGwpOihndWxsKQ==”这是什么意思?标题的值是这样的:“Basic KG51bGwpOihndWxsKQ==”所以我需要先去掉字符串开头的“Basic”吗?是的,“Basic”只是表示授权方法。好的,我正在使用“authorization=authorizationHeader.split()[1]”之前,我用“base64.b64decode(authorization)”解码它,现在我得到了“(null):(null)”作为结果。更接近但仍然不正确。这是我的错误…看起来我的初始值是null。谢谢你的帮助。我仍然觉得“Basic”这个词很奇怪“连接在Base64字符串前面。