c# - C# GetAsync 不适用于 Django Rest 框架
问题描述
这是我的 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>>();
}
}
问题是它正确地将标头发送为“授权:令牌 94afa9a8b0804e65a53d335dec230478f69b39c5”,但 Django Rest Framework 没有得到它。
我需要发送的任何其他内容,因为如果我使用 Postman 进行测试,它可以工作,但它也会发送其他我不知道是否有必要的东西。
更新:是的,我正在使用 localhost:8000 - django 中开发服务器的默认端口。之后我将转移到生产服务器。我从 django 服务器得到的响应是“未提供身份验证详细信息”。状态码 401 - 未经授权。
更新:尝试了 react 并在 Django 中实现了 CORS 白名单列表后,请求成功了!当我将 .NET 本地服务器添加到白名单时,Django 仍然说“未提供身份验证详细信息”。所以 .Net Core 2.2 中的某些东西没有发送标头!
解决方案
解决了。显然,由于没有斜杠,Django 服务器返回 301,而我的代码没有考虑到这一点。如果我在邮递员中测试没有斜杠的 url,它会处理 301 并将带有斜杠的请求重新发送到我可以收集的内容。在 url 上加上斜杠会绕过 301 响应。
推荐阅读
- python-3.x - 在 Python 3 中对嵌套列表进行排序
- excel - KDB:将 2 个或更多表保存到同一个 Excel/CSV 文件(添加页眉和/或页脚)?
- python - Flask-登录 | TypeError:需要支持缓冲区 API 的对象
- python - Python - 使用 .format 进行日志记录是否会创建额外的 CPU 周期
- node.js - 在 CORS 调用后 Express 会话 cookie 不持久
- android - Firebase 身份验证问题旧 api
- android - Retrofit2 ApiInterface.getCurrentCurrency(java.lang.String, java.lang.String)' 在空对象引用上
- c++ - 如何提高 C++ 中双精度的精度?
- tensorflow - Keras:根据 ModelCheckpoint-callback 的最佳模型在训练集上产生的损失与训练时显示的最佳时期损失不同
- sql - 在整个数据库中搜索列标题