Каква е разликата между HTTP GET и HTTP POST?

Този формуляр съдържа потенциално чувствителна информация, така че трябва да използвате POST, а не GET.

GET vs. POST

Строго погледнато, разликата между GET и POST се състои в това как се прехвърлят приложенията. Информацията в GET се предава в URL адреса. Ако някога сте виждали URL адрес, включващ въпроснички и символи на съюзи, търсите GET заявка: example.com/request.php?var1=foo&var2=bar е низ GET, който кодира променливата "var1" като "foo" и променливата "var2" като "bar". Информацията за POST е включена в тялото на заявката и не се вижда в низа на URL адреса (и следователно не се вижда от потребителя).

Официални насоки

Формално HTML указанията казват, че GET трябва да се използва за "idempotent" заявки или искания, които не променят нищо. Например, представете си уеб страница, която връща местното време: "example.com/weather.php?zipcode=12345". Актът за представяне на това искане отново и отново не променя нищо. POST трябва да се използва за приложения, които не са idempotent. Да предположим например, че сте направили покупка с кредитната си карта. Представянето на това искане отново и отново може да доведе до доста големи промени. Тъй като повторното изпращане на заявка за POST има последици (дори и да са незначителни), уеб браузърите обикновено правят покана на потребителя да потвърди, че наистина иска да подаде повторно формуляра за заявка.

Предимства на GET

GET има редица предимства пред POST. Тъй като GET е кодиран като част от URL адрес, можете да изрежете и поставите URL адреса и да го споделите с други хора. Могат да бъдат маркирани и заявките GET. Ако периодично проверявате времето, можете да добавите "example.com/weather.php?zipcode=12345" в лентата "Любими" на браузъра си, така че когато кликнете върху тази връзка, автоматично зареждате персонализираната си страница за време. Тъй като заявките GET са видими (и редактируеми) от потребителя, те също могат да бъдат пиратски. Ако например метеорологичният сайт не предлага очевиден начин за промяна на местоположението на метеорологичната заявка, можете ръчно да промените "12345" на "99762", за да разгледате времето в Nome, Аляска вместо времето в Schenectady.

Кога да използвате POST

Дори и в ситуации, които са непримирими, POST има от време на време ясни употреби. Някои от тях се основават на сигурност или законност. Променливите GET се предават "ясно", тъй като не искате да изпращате информация чрез GET за кредитни карти, социални номера, пароли или поверителна информация за потребителите. Тъй като данните от POST стават по-тъмни, предпочита се в тези ситуации. POST също се използва за предаване на големи количества данни, дори и данните да не са чувствителни. Технически, URL адресите (и следователно GET променливи) могат да имат неограничена дължина. Въпреки това, тъй като много браузъри ограничават колко пространство може да има един URL адрес, GET обикновено се счита за адекватен само за относително кратки заявки.