Отправляю запрос в формате 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),
});
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Проблема была в том что не правильно прописал селектор которому она была подключенаНадо добавлять $('
На Stack Overflow и на других форумах в темах по защите от XSS видел, что люди говорят про то, что htmlentities не спасет во всех случаях, но почему, никто...