Уведомления
Очистить всё

[Решено] Помощь с POST запрос через fetch


Xzilla
Сообщения: 1
Автор темы
(@xzilla)
New Member
Присоединился: 1 год назад

Ребят, туплю жестко: пытаюсь сделать простейший POST запрос через fetch, а сервер возвращает 400 с криком ‘Invalid Content-Type’. Вроде headers прописал, body в JSON.stringify завернул, но всё равно ловлю ошибку. Код:

fetch(‘https://api.example.com/data’, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
},
body: JSON.stringify({ foo: ‘bar’ })
})

Уже весь гугл перерыл, все примеры вроде бы так и делают. Может, сервер кривой? Или я какой-то очевидной фигни не вижу? Через Postman запрос нормально проходит, кстати. Спасайте, а то уже на стенку лезу 😅


1 ответ
1 Ответ
moss
 moss
(@moss)
Присоединился: 12 месяцев назад

New Member
Сообщения: 1

Автор: @xzilla
↑

Ребят, туплю жестко: пытаюсь сделать простейший POST запрос через fetch, а сервер возвращает 400 с криком ‘Invalid Content-Type’. Вроде headers прописал, body в JSON.stringify завернул, но всё равно ловлю ошибку. Код:

fetch(‘https://api.example.com/data’, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
},
body: JSON.stringify({ foo: ‘bar’ })
})

Уже весь гугл перерыл, все примеры вроде бы так и делают. Может, сервер кривой? Или я какой-то очевидной фигни не вижу? Через Postman запрос нормально проходит, кстати. Спасайте, а то уже на стенку лезу 😅

 

Смотри, раз через Postman работает, а код вроде верный, значит где-то дьявол в деталях. Давай по пунктам:

  1. Первое — проверь кавычки в коде
    У тебя в примере стоят ‘эти’ (фигурные), а должны быть ‘вот такие’ (прямые). JS их не съест, будет синтаксическая ошибка. Возможно, это копипаста так исказила, но на всякий случай:

javascript
fetch('https://api.example.com/data', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
    },
    body: JSON.stringify({ foo: 'bar' })
})
  1. Второе — добавь обработку ответа
    Может, сервер шлет больше информации в теле ошибки? Попробуй так:

javascript
fetch('https://api.example.com/data', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
    },
    body: JSON.stringify({ foo: 'bar' })
})
.then(response => {
    if (!response.ok) {
        return response.text().then(text => { throw new Error(text) })
    }
    return response.json()
})
.then(data => console.log('Успех:', data))
.catch(error => console.error('Ошибка:', error));
  1. Третье — проверь Network в DevTools
    Зайди во вкладку Network, отправь запрос и сравни заголовки твоего fetch и Postman-запроса. Особенно смотри на:

    • Реальный Content-Type который уходит

    • Наличие лишних заголовков

    • Точный URL (нет ли лишних символов)

Часто бывает, что проблема в CORS preflight или сервер хочет какой-то дополнительный заголовок типа Accept.

Если все равно не работает — скинь реальный URL API (если не секретный) или хотя бы полный ответ сервера из Network. Без этого гадать будем! 🤷‍♂️

 


Ответ
Поделиться: