В стандарте HTTP есть 3 составляющие: стартовая строка, заголовки и тело.
Когда отправляю GET-запрос, то все параметры идут вместе с URI. Например
GET /index.php?name='myname'&age=26 HTTP/1.1
А когда я передаю те же самые данные, но методом POST, то эти параметры name и age где передаются? В теле запроса? В заголовках? Как выглядит этот HTTP-запрос?
Имеется ввиду чистый HTTP-запрос, как прописано в протоколе.
Если переформулировать вопрос. PHP, когда формирует массив $_POST
, то данные этого массива из какой части HTTP-запроса берет?
В случае с $_GET
все понятно, берет из URI. А с $_POST
неясно.
Итак, подытожу всё что тут сказали
GET Передаётся в URL
GET https://example.com/comments?page=2&pageSize=10
POST Передаёт данные в теле
POST https://example.com/comments HTTP/1.1
content-type: application/json
{
"name": "sample",
"time": "Wed, 21 Oct 2015 18:27:50 GMT"
}
Заголовок content-type определяет как данные будут переданы (JSON или кодированы url-encoded) таким образом сервер поймёт как их обработать.
На заметку:
GET
POST
Данные POST запроса передаются в теле. То есть стартовая строка, потом заголовки, пустая строчка, а дальше идут параметры POST. Часто в формате url-encoded (formdata) - это как в адресной сроке у GET запроса, но в последнее время есть тенденция передавать в теле json. Формат кодировки запроса определяется по заголовку Content-encoding.
А когда я передаю те же самые данные, но методом POST, то как выглядит этот http-запрос?
Очень удобно использовать утилиту nc для отладки текстовых протоколов. Запустите её с флагом -l
с указанием порта, который она будет прослушивать, и выполните свой POST-запрос на localhost
в соседнем терминале.
nc -l 8080
curl http://localhost:8080/index.php -d name=myname -d age=26
Вы увидите примерно следующее
POST /index.php HTTP/1.1
Host: localhost:8080
User-Agent: curl/7.47.0
Accept: */*
Content-Length: 18
Content-Type: application/x-www-form-urlencoded
name=myname&age=26
Сразу извиняюсь если некорректно назвал топик, но интересует такая тема:
С помощью curl получаю данные со стороннего сайта, изначально его кодировка не известнаВ случае если кодировка windows-1251 получаю не читаемый...
Подскажите пожалуйста, как извлечь данные через foreach? на выходе получается неподходящий для этого объектНужно, чтобы можно было сделать key => value,...