İstek gövdesine karşı bir HTTP istek başlığında ne var?


51

Bir mobil istemci için bir dizi web servisi üzerinde çalışıyorum ve gereksinimler, tüm isteklere dahil edilmesi, belirli isteklerde saklanması ve diğerlerinde sonuçları filtrelemek için kullanılması gereken benzersiz bir cihaz kimliği gerektiriyor.

Tüm isteklere ekleneceği için özel bir HTTP başlığına konulması yönünde bir öneride bulunuldu, bu nedenle belirli bir veri parçasının bir başlıkta mı yoksa diğer verilerle birlikte mi olduğunu belirlemek için hangi kriterlerin kullanılabileceğini merak etmeye başladım. istek gövdesi.

Böyle bir kriter var mı?


Yanıtlar:


51

Bilgi önemli olduğunda, onu vücuda koymalısınız.

Neden?

  1. Proxy sunucularının başlıkları değiştirmesine izin verilir. Birçoğu bilmedikleri tüm başlıkları soyacak şekilde yapılandırılmıştır. Ancak bu, yalnızca şifrelenmemiş HTTP kullandığınızda geçerlidir. HTTPS kullandığınızda, proxy başlıkları değiştiremez çünkü şifrelenmiştir.
  2. Bir web servisini kullanırken, bunu genellikle diğer cihazlarla, servislerle ve araçlarla birlikte çalışabilirlik için yaparsınız. Web servisleriyle çalışan çoğu API ve araç istekleri kolayca değiştirebilir, ancak birçoğu özel başlıklar eklemeyi zorlaştırır hatta imkansız hale getirir. Bu, elbette, birlikte çalışabilirlik bir endişe olduğunda geçerlidir. Ancak umursamıyorsanız, web protokollerini neden yalnızca ham TCP'de kendi protokolünüzü oluşturmak yerine web servislerini kullandığınızı kendinize sormak isteyebilirsiniz.

BÜYÜK CEVAP - Bana mantıklı gelen iki düşünce ama daha önce öğretilmedi.
R Claven

1
TK bu eski ancak bu cevabı onaylamak için bu topluluğa katıldım. Kudos.
Potasyum İyon

22

Çizgi biraz bulanık olsa da, benim için bir kural: iş mantığınızın üzerinde çalıştığı veriler vücutta olmalı, meta veriler başlıklara konulabilir / konmalıdır.

Buna bakmanın başka bir yolu şudur: Sadece belirli taleplerde ortaya çıkan veriler, tüm uygulama boyunca tutarlı bir şekilde işlenen veriler başlığa girmelidir.

Bir başka bakış açısı ise: Bir uygulamanın değil, örneğin bir yönlendirici / güvenlik duvarı tarafından bir veri parçasının global olarak işlendiğini hayal edebiliyor musunuz? Evetse, muhtemelen vücuttan ziyade başlıklara girmelidir.

Bu kuralları uygulamanın bazı örnekleri:

  • Güvenlik bilgileri, bir uygulamanın her yerinde aynı şekilde ele alınacağı için başlıklara girer; Uygulama düzeyinde, filtreden geçmesi durumunda, talebi işleme alan asıl noktadan bağımsız olarak, geçerli bir kimlik bilgisi olmadan istekleri reddeden bazı istek filtreleri olacaktır.
  • Öte yandan, bir yöneticinin sisteminize kullanıcı ekleyebilmesine izin veren bir uç noktaya sahipseniz, oluşturulacak kullanıcının oturum açma talebi aşağıdakilerden yapılmalıdır: a) uygulamanızın iş mantığı tarafından ele alındığında, b) bu belirli son noktada görünür, ancak başkalarında görünmez.
  • Önbelleğe almayı denetleyen seçenekler başlıklara uygun olabilir (önbellekleme uygulamanızın iş mantığının temel bir parçası değilse).

Benzersiz cihaz kimliği ile ilgili sorunuza geri dönersek: eğer her yerde tutarlı bir şekilde kullanılırsa, örneğin sadece kayıt için, başlıklara konulabilir. Ancak, istekleri uç noktaya bağlı olarak farklı şekillerde filtrelemek için kullanılırsa, vücutta olması daha iyi olur. Elbette, her iki kullanım durumunuz varsa, API kullanıcısını aynı veriyi iki yere koymaya zorlamak yerine, yalnızca bir tek yoldan (muhtemelen başlıklar) geçmeniz daha iyi olacaktır; Tutarsız girdiler veya bir tür onaylama yapılması.


0

Müşteri isteğinin içeriği; Aynı sunucuya yapılan birden fazla istek arasında değişmeyecek olan HEADER'in bir parçası olacak, örneğin kimlik bilgileri, istek başına sıklıkla değişiklik yapan diğerleri BODY'nin bir parçası olacak.

VEYA

mesajın / gövde içeriğinin özelliği başlığa girecektir. örneğin) kodlama tipi, içerik uzunluğu, içerik tipi.

VE

Sizin durumunuzda, benzer parametreler URL'de sorgu / istek paramları olarak eklenmelidir.

/mobiles?type=MOTO&colour=black

Huzurlu servislerde URL'nin kendisi bir nesneye başvuracaktır

/conferences/{conference_id} -> özel konferansı ifade eder


Bu bir teklif mi? Nereden ? Bunu neden öneriyorsun? Lütfen daha iyi hale getirmek için cevabınızda bazı düzenlemeler yapın.
Machado
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.