Вы не создаете тело запроса: следовательно, ошибка.Атрибут postData
, установленный вами для объекта запроса, не является каким-либо известным атрибутом, поэтому он также не будет установлен для запроса, то есть сервер никогда не увидит ваш токен CSRF.Вы должны посмотреть в MDN документы по fetch () .
Я полагаю, что у вас все будет хорошо, просто заменив postData
на body
, но это трудно понять без доступа к вашей конечной точке.Мы знаем, что для этого могут потребоваться специальные заголовки.
Учитывая, что вы публикуете только обычные данные формы (что подразумевается под вашим кодом key=value
), я бы также начал использовать объекты FormData
, предоставленные вашим браузером.чтобы избежать ручного кодирования деталей реализации.
const formData = new FormData();
formData.append("CSRFToken", token);
const response = fetch("/loyalty/points", {
method : 'POST',
cookie : cookies,
body : formData,
headers : {
'cookie' : cookies,
/* other headers you need, possibly content-type (see below) */
},
}).then(response => response.text()).catch(error => console.log(error));
return response;
});
Предостережение: при использовании API FormData всегда будет устанавливаться content-type
данных на multipart/form-data
.Если ваш сервер по какой-либо причине не поддерживает эту кодировку, и вам нужно использовать application/x-www-form-urlencoded
( см. Здесь разницу ), вы не можете вслепую изменить Content-Type
: вам также нужно url кодирует содержимое .
Для отладки я бы просто использовал обычный экземпляр Chrome, чтобы увидеть это.Вы должны быть в состоянии выполнить код там и увидеть сетевые запросы в DevTools (где сразу будет заметно, что вы POST пустой запрос).