使用 C# 客户端缺少授权标头

Sie*_*yuu 0 c# django wsgi gunicorn django-rest-framework

我正在使用django-rest-framework. 对于授权,我选择使用令牌授权(而不是 JWT)。以下是我尝试过的:

使用邮递员(作品)

headers: 
Authorization: Token 329367424fd30a876ccff05dbc5a18d86fe7158c
Run Code Online (Sandbox Code Playgroud)

使用 C# 客户端(不起作用)

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Token 329367424fd30a876ccff05dbc5a18d86fe7158c");
await client.GetAsync(<url>)

// Authentication credentials were not provided.
Run Code Online (Sandbox Code Playgroud)

在我调试和覆盖TokenAuthentication函数后,我意识到Authorization headers如果客户端请求,该函数将被删除C#

编辑

实际上我尝试过使用 Javascript 并且它也有效,我认为问题是 C# HttpClient

我试过

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization3", $"token {token}");
client.DefaultRequestHeaders.Add("Authorization", $"token {token}");
Run Code Online (Sandbox Code Playgroud)

Authorization在 python 中调试函数,我发现只Authorization3发送到服务器而Authorization不是

在此输入图像描述

Sie*_*yuu 5

标头丢失的原因Authorization是由于重定向。我很抱歉没有发布我的 Uri 字符串,因为我从来没有想过这是问题所在。

我的 Uri 字符串是http://localhost:3000/module?query=123. 调用GetAsyncUri 字符串后成为http://localhost:3000/module/?query=123(模块后额外的斜杠)。所以库检测到这是一个重定向

所以我的快速解决方法是将网址修改为http://localhost:3000/module/?query=123

对于那些想知道这是否是由重定向引起的的人可以查看此链接