这是我的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中的某些内容没有发送标头!
答案 0 :(得分:0)
已解决。显然,由于没有斜杠,Django服务器返回了301,而我的代码没有考虑到这一点。如果我在邮递员中测试网址时不带斜杠,则它会处理301并以斜杠将请求重新发送到我可以收集的位置。在网址上加上斜杠会绕过301响应。