HTTP GET ile HTTP POST arasındaki fark nedir?

Bu form, potansiyel olarak hassas bilgiler içerir, bu nedenle GET değil, POST kullanmanız gerekir.

GET vs. POST

Kesin olarak, GET ile POST arasındaki fark, uygulamaların nasıl aktarıldığına dayanmaktadır. GET'deki bilgiler URL'de iletilir. Soru işaretlerini ve sendika sembollerini içeren bir URL gördüyseniz, bir GET isteği arıyordunuz: example.com/request.php?var1=foo&var2=bar, "var1" değişkenini kodlayan bir GET dizesidir. "foo" ve "var2" değişkeni "bar" olarak. POST bilgisi, isteğin gövdesinde bulunur ve URL dizesinde görünmez (ve bu nedenle, kullanıcı tarafından görülmez).

Resmi kurallar

Resmi olarak, HTML yönergeleri, GET'in "idempotent" istekleri veya herhangi bir şeyi değiştirmeyen isteklerde kullanılması gerektiğini belirtir. Örneğin, yerel hava durumunu döndüren bir Web sayfası düşünün: "example.com/weather.php?zipcode=12345". Bu talebi tekrar tekrar sunma eylemi hiçbir şeyi değiştirmez. POST, idempotent olmayan uygulamalar için kullanılmalıdır. Örneğin, kredi kartınızla bir satın alma işlemi yaptığınızı varsayalım. Bu talebin tekrar tekrar sunulması oldukça büyük değişikliklere yol açabilir. Bir POST isteğinin yeniden gönderilmesinin sonuçları (küçük olsalar bile) sonuç verdiğinden, web tarayıcıları genellikle, kullanıcının gerçekten sorgu formunu yeniden göndermek istediklerini onaylaması için bir istekte bulunur.

GET'in avantajları

GET'in POST'a göre birtakım avantajları vardır. GET bir URL'nin parçası olarak kodlandığından, URL'yi kesip yapıştırabilir ve başkalarıyla paylaşabilirsiniz. GET istekleri de işaretlenebilir. Süreyi düzenli olarak kontrol ederseniz, tarayıcınızın "Sık Kullanılanlar" çubuğuna "example.com/weather.php?zipcode=12345" adresini ekleyebilir, böylece bu bağlantıyı tıkladığınızda özel hava durumu sayfanızı otomatik olarak yükleyebilirsiniz. GET istekleri kullanıcı tarafından görülebilir olduğundan (ve düzenlenebilir), bunlar da korsan olabilir. Örneğin, hava durumu sitesi hava durumu talebinin yerini değiştirmek için açık bir yol sunmadıysa, Schenectady'deki hava yerine Nome, Alaska'daki hava durumuna bakmak için "12345" değerini "99762" olarak değiştirebilirsiniz.

POST ne zaman kullanılır?

Kimliksiz olan durumlarda bile, POST ara sıra belirgin kullanımlara sahiptir. Bunlardan bazıları güvenlik veya yasallığa dayanmaktadır. GET değişkenleri GET aracılığıyla kredi kartları, sosyal güvenlik numaraları, şifreler veya gizli kullanıcı bilgileri hakkında bilgi göndermek istemediğiniz için "açık" olarak iletilir. POST verileri koyulaştıkça, bu durumlarda tercih edilir. POST, ayrıca veriler hassas olmasa bile büyük miktarlarda veri iletimi için kullanılır. Teknik olarak, URL'ler (ve bu nedenle GET değişkenleri) sınırsız uzunlukta olabilir. Ancak, birçok tarayıcı bir URL'nin ne kadar alana sahip olabileceğini sınırladığından, GET genellikle yalnızca nispeten kısa talepler için yeterli kabul edilir.