【发布时间】:2020-08-19 17:10:12
【问题描述】:
我对使用 API 进行 Web 开发非常陌生。所以我有一个函数可以使用下面的代码向服务器发送请求。它与我存储在 cookie 中的令牌一起发送。
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Content-Type", "text/plain");
var raw = "{\n \"latitude\": \"69.23489236336972000\",\n \"longitude\": \"-69.08944702148439000\",\n \"log_start\": \"2020-05-03T09:37:41Z\",\n \"log_end\": \"2020-05-03T10:00:00Z\"\n}";
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow',
credentials: 'include',
};
fetch("http://127.0.0.1:8000/logs/log/", requestOptions)
.then(response => response.json())
.then(result => console.log(result))
.catch(error => console.log('error', error));
但是,当我尝试发送它时,我不断收到此错误。
https://i.stack.imgur.com/StU0q.png
经过一番挖掘,我注意到我的 cookie 没有随请求一起发送(如下图所示)。这对我来说很奇怪,因为我在 requestOptions 中将“凭据”设置为“包含”。
https://i.stack.imgur.com/Hp1mi.png
但是,当我注释掉将“Content-Type”附加到标题的行时,标题变为空。 cookie 再次包含在标头中,以及最初未包含的其他标头。
var myHeaders = new Headers();
// myHeaders.append("Content-Type", "application/json");
// myHeaders.append("Content-Type", "text/plain");
var raw = "{\n \"latitude\": \"69.23489236336972000\",\n \"longitude\": \"-69.08944702148439000\",\n \"log_start\": \"2020-05-03T09:37:41Z\",\n \"log_end\": \"2020-05-03T10:00:00Z\"\n}";
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow',
credentials: 'include',
};
fetch("http://127.0.0.1:8000/logs/log/", requestOptions)
.then(response => response.json())
.then(result => console.log(result))
.catch(error => console.log('error', error));
https://i.stack.imgur.com/JJNbB.png
但如果我不将“Content-Type”设置为“application/json”,我会收到“415 Unsupported Media Type”错误。
有谁知道这是为什么?以及如何解决?
先感谢您。
我没有足够的声誉来发布图片,所以我将它们附加为 url
【问题讨论】:
标签: django reactjs cookies django-rest-framework fetch-api