|
вопрос от начинающего
|
|||
---|---|---|---|
#18+
Господа, объясните плиз находчиво, чем отличаются метод POST от GET? И какой подход сейчас наиболее распространен? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2004, 09:53 |
|
вопрос от начинающего
|
|||
---|---|---|---|
#18+
Вообще эти два метода практически ничем не отличаюся. Если очень интересно, то почитайте подробную документацию по HTTP-протоколам. Единственное насколько я знаю, что с помощью метода GET можно передать до 600 байт (то ли Кбайт, я точно не помню), а с помощью метода POSt до 8 Mb. C помощью метода ПОСТ передаются данные (например из форм) скрытыми от юзеров, а метод ГЕТ передаст (это слово, а не ругательство) данные в строке браузера (т.е. они видны для пользователей). Например, для ГЕТа Код: plaintext 1.
$id, $name ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2004, 11:20 |
|
вопрос от начинающего
|
|||
---|---|---|---|
#18+
> с помощью метода POSt до 8 Mb. нет, размер POST запроса неограничен. Но программные средства (ПХП в частности да и PERL насколько я помню) позволяют ограничивать допустимый размер POST-запроса С точки зрения теории GET от POST отличается только одним : В get-запросе данные передаются в URL - и ты можешь сделать ссылку на скрипт, обрабатывающий GET-запрос и например сохранить ее в избранном. Например : http://www.example.com/script.php?action=show_page - это пример ссылки на скрипт, обрабатывающей GET-запрос. GET-запросы могут кешировать прокси и броузерами. GET-запросы часто сохраняются в логах. Например если ты сделаешь авторизацию через GET-метод , логин и пароль будут посланы на сервер примерно в таком виде: http://www.example.com/auth.php?login=your_login&password=your_password и строка будет сохранена в логе веб-сервера (Apache). Если злоумышленник сможет получить лог, он узнает пароли доступа. POST-запрос из броузера можно сформировать только с помощью формы: <form method="POST" ...> данные передаются в теле HTTP-запроса. POST-запросы не кешируются ни броузером ни прокси. На него нельзя сделать URL. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2004, 14:25 |
|
вопрос от начинающего
|
|||
---|---|---|---|
#18+
Макснет, размер POST запроса неограничен. А сколько же по вашему можно пересылать с помощью POST? (Я конечно не утверждаю что до 8 Мб, но что-то около того, насколько помнится) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2004, 15:37 |
|
вопрос от начинающего
|
|||
---|---|---|---|
#18+
RFC по HTTP не накладывает никаких ограничений на размер POST-запроса. Все ограничения делаются программно : настройки в ПХП, настройки сервера, настройки прокси и т.д. ЗЫ насколько мне известно, некоторые и по 700Мб через POST пускают ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2004, 16:09 |
|
вопрос от начинающего
|
|||
---|---|---|---|
#18+
то о чем ты пишешь - это настройка ПХП, ограничени размера POST-запроса. Делается в php.ini : Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2004, 16:10 |
|
вопрос от начинающего
|
|||
---|---|---|---|
#18+
[quote]POST-запросы не кешируются ни броузером[/quote]Отчасти несовсем верно - возмьём простейший скрипт Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2004, 01:16 |
|
вопрос от начинающего
|
|||
---|---|---|---|
#18+
Guest я имел ввиду не это кеширование. Ты прав, если нажать Refresh после POST-запроса броузер автоматически пошлет на сервер те же данные что ты ввел в форме ранее (то есть броузер где-то у себя временно сохраняет эти данные). Кстати MSIE перед отправкой данных еще переспросит : "Данная страница устарела. Хотите ли вы повторить отправку данных ?" (примерно так). Под кешированием я имел ввиду сохранение страницы в кеше броузера или прокси-сервера, чтобы в дальнейшем можно было взять страницу из этого кеша. Вот такого кеширования при POST-запросе нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2004, 18:17 |
|
вопрос от начинающего
|
|||
---|---|---|---|
#18+
Метод GET передаёт в виде URL, а ПОСТ в виде переменной окружения. На самом деле URL тоже переменная окружения. При обработке скриптом отличается метод "вытаскивания" данных. На перле это выглядет так: при ПОСТе - sysread(STDIN,$query,$ENV{'CONTENT_LENGTH'}); а при ГЕТе - $query=$ENV{'QUERY_STRING'}; ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2004, 23:39 |
|
вопрос от начинающего
|
|||
---|---|---|---|
#18+
Кстати, будь внимателен с обработкой полученных переменных. Твой скрипт можно будет взломать, если в отправить переменную другим способом. Короче говоря, если ты хочешь получить переменную $а при помощи POST, то в начале скрипта напиши $a=$_POST["a"] а уже потом начинай обрабатывать полученные данные. Можно конечно везде в программе писать $_POST["a"] , но известно, что обращение к именнованым массивом происходит в несколько раз дольше, чем к переменным. Кстати, может кто помнит пример, как можно подставить переменные окружения, чтобы произвести некоторый "взлом", я не могу ни одного примера вспомнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2004, 08:14 |
|
|
start [/forum/topic.php?fid=23&fpage=510&tid=1479727]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 282ms |
total: | 417ms |
0 / 0 |