C#GetAsync无法与Django Rest Framework一起使用

时间:2019-02-18 12:13:03

标签: c# django django-rest-framework getasync

这是我的HomeController.cs中的函数:

async Task<Dictionary<Object, Object>> GetSiteWithID(int ID)
    {
        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", "94afa9a8b0804e65a53d335dec230478f69b39c5");
            HttpResponseMessage responseMessage = await client.GetAsync("http://localhost:8000/site/1");
            responseMessage.EnsureSuccessStatusCode();
            return await responseMessage.Content.ReadAsAsync<Dictionary<Object, Object>>();
        }
    }

问题是它以“ Authorization:Token 94afa9a8b0804e65a53d335dec230478f69b39c5”的形式正确发送了标头,但Django Rest Framework没有得到它。

我需要发送的其他任何内容,因为如果我用Postman进行测试,它可以工作,但是它还会发送其他我不知道是否有必要的东西。

更新:是的,我正在使用localhost:8000-django中开发服务器的默认端口。之后,我将移至生产服务器。我从django服务器收到的响应是“未提供身份验证详细信息”。状态码401-未经授权。

更新:尝试使用react并在Django中实现了CORS白名单列表后,该请求成功了!当我将.NET本地服务器添加到白名单中时,Django仍然说“未提供身份验证详细信息”。因此,.Net Core 2.2中的某些内容没有发送标头!

1 个答案:

答案 0 :(得分:0)

已解决。显然,由于没有斜杠,Django服务器返回了301,而我的代码没有考虑到这一点。如果我在邮递员中测试网址时不带斜杠,则它会处理301并以斜杠将请求重新发送到我可以收集的位置。在网址上加上斜杠会绕过301响应。