Почему сервер не разбирает urlencoded form?

76
12 февраля 2022, 06:10

Отправляю запрос в формате x-www-form-urlencoded (заголовок явно указан), на сервере читаю $_POST и там абсолютно пусто... При этом данные доступны вот так: file_get_contents("php://input") (получаю закодированную строку). Почему так происходит? Почему сервер сам не разбирает запрос в $_POST?

P.S. Проблема проявилась когда попытался перелезть с $.ajax на fetch. До этого все работало!

Пример отправки запроса:

const fetchUrlEncoded = (url, data) => fetch(url, {
    method: 'POST',
    headers: {'Content-Type': 'x-www-form-urlencoded; charset=UTF-8'},
    body: new URLSearchParams(data),
});
await fetchUrlEncoded('/ajax/myscript.php', {x: 123, y: 321});

P.P.S. Вообще не помню отправлял ли я когда-нибудь в этом формате POST запросы. PHP вообще должен их парсить? Может это нормально? О_о Что тогда мне через parse_str данные разбирать?

Пытался кстати еще через multipart/form-data отправить и тоже нефига не разбирает!!! Да что с этим fetch не так? Или это я такой криворукий? =(

const createFormData = data => Object.entries(data).reduce((f, [k, v]) => {
    f.append(k, v);
    return f;
}, new FormData());
const fetchFormData = (url, data) => fetch(url, {
    method: 'POST',
    headers: {'Content-Type': 'multipart/form-data; charset=UTF-8'},
    body: createFormData(data),
});
READ ALSO
fancybox- не могу удалить значение кнопки close

fancybox- не могу удалить значение кнопки close

Проблема была в том что не правильно прописал селектор которому она была подключенаНадо добавлять $('

116
Почему htmlentities не может на 100% обезопасить от XSS?

Почему htmlentities не может на 100% обезопасить от XSS?

На Stack Overflow и на других форумах в темах по защите от XSS видел, что люди говорят про то, что htmlentities не спасет во всех случаях, но почему, никто...

101