Если у вас в коде отправки данных вроде бы всё написано верно, но на стороне сервера пустой $_POST, то проблема может быть в том, что в ссылке забыли укзазать закрывающий слеш /
fetch('http://domain.com/api',{ // Может не работать. $_POST = [] method: 'POST', body:'a=b', headers: { "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" }, })
Однако, если добавить завершающий слеш, то данные будут получены на стороне сервера
fetch('http://domain.com/api/',{ // Может заработать. $_POST = ['a'='b']
method: 'POST',
body:'a=b',
headers: {
"Content-type": "application/x-www-form-urlencoded; charset=UTF-8"
},
})
По всей видимости, это работает для случаев перенаправлений 301.