Frontend get request vs backend get request
В настоящее время я работаю над проектом с фронтендом, который не обслуживается django, просто случайная html-страница и бэкенд, построенный на django. Мне нужно сделать get запрос с моего фронтенда, чтобы получить токен csrf, затем поместить этот токен в <input type="hidden" name="csrfmiddlewaretoken" value={response from get request}> (как я понимаю, чтобы сделать post запрос к серверу django). Но когда я делаю get запрос с axios с фронтенда и бекенда (тот же url, те же параметры), я получаю разные результаты, следовательно, я не получаю токен, который я ищу в запросе с фронтенда. Кто-нибудь может помочь/объяснить мне это, пожалуйста.
запрос фронтенда:
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
(async () => {
try {
// make a get request to this url to get the cookie
const request = await axios.get("http://127.0.0.1:8000/accounts/signup/",{withCredentials:true});
console.log(request.config)
// the line below prints out null because there is nothing in the response
// console.log("request->", request.headers["set-cookie"][0].split(";")[0]);
} catch (error) {
console.error(error);
}
})();
</script>
перед конечным результатом:
Object { transitional: {…}, adapter: exports(e), transformRequest: (1) […], transformResponse: (1) […], timeout: 0, xsrfCookieName: "XSRF-TOKEN", xsrfHeaderName: "X-XSRF-TOKEN", maxContentLength: -1, maxBodyLength: -1, validateStatus: validateStatus(e), … }
обратный запрос с фиктивного сервера, чтобы проверить, есть ли тот куки, который я ищу :
const axios = require("axios").default;
(async () => {
try {
const request = await axios.get("http://127.0.0.1:8000/accounts/signup/");
// this is the csrf token i'm looking for
console.log("request->", request.headers["set-cookie"][0].split(";")[0]);
} catch (error) {
console.error(error);
}
})();
ответ бэкенда:
csrftoken={token_value}