CodeGym/Java Blogu/Rastgele/Bölüm 3. HTTP/HTTPS
John Squirrels
Seviye
San Francisco

Bölüm 3. HTTP/HTTPS

grupta yayınlandı
Bu materyal, "Kurumsal Geliştirmeye Giriş" serisinin bir parçasıdır. Önceki makaleler: Bölüm 3. HTTP/HTTPS - 1MERHABA! Bugün HTTP ve HTTPS protokollerini öğreneceğiz. Ama önce bir noktayı açıklığa kavuşturalım: OSI modelinin uygulama düzeyinde bir ağ üzerinden veri göndermek için kullanılan protokollerden bahsediyoruz. OSI modelini önceki yazılarımızdan birinde öğrendiğimizi hatırlarsınız. Bunu hatırlamıyorsanız, işte burada .

Veri iletişim protokolü nedir?

Bu, farklı hizmetlerin geliştiricilerinin başkalarının anlayabileceği bir biçimde bilgi göndermesine izin veren üzerinde anlaşmaya varılmış kurallar dizisi olarak adlandırdığımız şeydir. Örneğin, hem Facebook hem de Twitter'dan bilgi almak için Google Chrome'u kullanabilirsiniz, çünkü geliştiriciler bilgileri tarayıcınızın işlemesine izin veren standart HTTP protokolünü kullanarak gönderir. Tek tip kurallar, sunucu bölümünü geliştiren kişiler için çok uygundur: bilgileri sizin için dönüştürebilen ve uygun protokolü kullanarak gönderebilen birçok kitaplık vardır. HTTP başlangıçta HTML sayfaları göndermek için bir protokol olarak tasarlandı. Uzun bir süre bu şekilde kullanıldı, ancak şimdi programcılar onu hem dizileri hem de medya dosyalarını göndermek için kullanıyor. Genel olarak, bu protokol evrensel olarak kabul edilir ve çok yönlüdür ve kullanımı gerçekten kolaydır. Ve şimdi nasıl kullanılacağını araştıracağız.

HTTP'nin yapısı

HTTP protokolünün yalnızca metinden oluştuğunu hemen not etmeliyiz. Bizi en çok ilgilendiren bu metnin yapısıdır. Her mesaj üç bölümden oluşur:
  1. Başlangıç ​​satırı — Bu, bazı temizlik verilerini tanımlar.
  2. Başlıklar — Bunlar, mesaj parametrelerini tanımlar.
  3. Gövde — Bu, mesajın içeriğidir. Gövde, başlıklardan boş bir satırla ayrılmalıdır.
HTTP protokolü, bir sunucuya istek göndermek ve sunucudan yanıt almak için kullanılır. İsteklerin ve yanıtların parametreleri biraz farklıdır.

Basit bir HTTP isteği şöyle görünür:

GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Başlangıç ​​çizgisi şunları gösterir:
  • GET — İsteğin yöntemi
  • / — isteğin yolu
  • HTTP/1.1 — Protokol sürümü
O zaman başlıklar gelsin:
  • Ana bilgisayar — İsteğin gönderildiği ana bilgisayar
  • User-Agent — İsteği gönderen müşteri
İleti gövdesi eksik. Bir HTTP isteğinde yalnızca başlangıç ​​satırı ve "Host" başlığı gereklidir. Şimdi adım adım her şeye bakalım. Bir HTTP isteği bazı yöntemler içermelidir. Dokuz tane var: GET, POST, PUT, OPTIONS, HEAD, PATCH, DELETE, TRACE, CONNECT. En yaygın olanları GET ve POST'tur. Bu iki yöntem ilk etapta yeterli olacaktır. GET — Bu yöntem, sunucudan içerik ister. Buna göre, GET yöntemiyle yapılan isteklerin bir mesaj gövdesi yoktur. Ancak ihtiyacınız varsa, yol üzerinden (başlangıç ​​satırında) parametreleri aşağıdaki biçimde iletebilirsiniz:
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
burada codegym.cc ana bilgisayardır, /send isteğin yoludur ve ? sorgu parametrelerinin takip ettiğini gösteren bir ayırıcıdır. Sonunda, anahtar/değer çiftleri ("anahtar=değer") listelenir ve bir ve işaretiyle ayrılır. POST — Bu yöntem, sunucudaki bilgileri yayınlar. Bir POST isteği, çeşitli türde bilgiler gönderebilir: "anahtar=değer" çiftleri, JSON, HTML kodu ve hatta dosyalar gibi parametreler. Tüm bilgiler mesajın gövdesinde gönderilir. Örneğin:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc

{
  "Id": 12345,
  "User": "John"
}
İstek codegym.cc/user/create/json adresine gönderilir ve protokol sürümü HTTP/1.1'dir. "Kabul Et", müşterinin almayı beklediği yanıt biçimini belirtir. "Content-Type", istekte gönderilen mesaj gövdesinin biçimini belirtir. "İçerik-Uzunluk", gövdedeki karakter sayısıdır. Bir HTTP isteği birçok farklı başlık içerebilir. Daha fazla bilgi için protokolün özelliklerine bakın .

HTTP yanıtları

Bir istek aldıktan sonra, sunucu onu işler ve istemciye bir yanıt gönderir:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98

<html>
  <head>
    <title>An Example Page</title>
  </head>
  <body>
    <p>Hello World</p>
  </body>
</html>
Yanıtın başlangıç ​​satırı protokol sürümünü (HTTP/1.1), durum kodunu (200) ve durum açıklamasını (OK) içerir. Başlıkları, içeriğin türünü ve uzunluğunu içerir. Yanıt gövdesi, tarayıcının bir HTML sayfası olarak işlediği HTML kodunu içerir.

Yanıt durum kodları

Mesaj gövdesi ve başlıkları ile ilgili her şey açık, ancak durum kodları hakkında birkaç söz söylemeliyiz. Yanıt durum kodları her zaman üç hanelidir. Kodun ilk basamağı yanıtın kategorisini gösterir:
  • 1xx - Bilgilendirici. İstek alındı. Sunucu devam etmeye hazır.
  • 2xx — Başarılı. Talep alındı, anlaşıldı ve işlendi.
  • 3xx — Yönlendirme. İsteği işlemek için ek eylemler gerçekleştirilmelidir.
  • 4xx — İstemci Hatası. İstek hatalar içeriyor veya protokole uymuyor.
  • 5xx — Sunucu Hatası. İstek doğru bir şekilde oluşturuldu, ancak sunucu bunu işleyemedi.
Koddaki ikinci ve üçüncü basamaklar daha spesifik bir yanıtı gösterir. Örneğin:
  • 200 OK — İstek alındı ​​ve başarıyla işlendi.
  • 201 Oluşturuldu — İstek alındı ​​ve başarıyla işlendi, bu da yeni bir kaynak veya örneğin oluşturulmasıyla sonuçlandı.
  • 301 Kalıcı Olarak Taşındı — İstenen kaynak kalıcı olarak taşındı. Bundan sonraki talepler yeni adres kullanılarak yapılmalıdır.
  • 307 Geçici Yönlendirme — Kaynak geçici olarak taşındı. Şimdilik, otomatik yönlendirme kullanılarak erişilebilir.
  • 403 Yasak — İstek anlaşıldı, ancak yetkilendirme gerekiyor.
  • 404 Bulunamadı — Sunucu, kaynağı bu adreste bulamadı.
  • 501 Uygulanmadı — Sunucu, isteğe yanıt vermek için gereken işlevselliği desteklemiyor.
  • 505 HTTP Sürümü Desteklenmiyor — Sunucu, HTTP protokolünün belirtilen sürümünü desteklemiyor.
Yanıt durum koduna ek olarak bir durum açıklaması da gönderilir. Bu, her bir özel durumun ne anlama geldiğini netleştirmeye yardımcı olur. HTTP protokolü çok pratiktir: bir istemci ile sunucu arasında çok esnek bir iletişim düzenlemek için kullanabileceğiniz çok sayıda başlık sağlar. Tüm istek ve yanıt başlıklarının, istek yöntemlerinin ve yanıt durum kodlarının tam olarak değerlendirilmesi, tek bir makale için çok fazla olacaktır. Gerekirse, protokolün resmi özelliklerini okuyabilirsiniz., tüm nüansları açıklayan. 80 numaralı bağlantı noktasında HTTP protokolünü kullanmak adettendir, bu nedenle 80 numaralı bağlantı noktasıyla biten bir URL gördüğünüzde, ona erişmek için HTTP kullanmanız gerektiğinden emin olabilirsiniz. Teknoloji geliştikçe ve kişisel veriler İnternet üzerinden gönderilmeye başlandıkça, istemcinin sunucuya gönderdiği bilgiler için nasıl ek koruma sağlanacağını düşünmek gerekli hale geldi. Bu düşüncenin sonucu HTTPS protokolü oldu.

HTTPS ve HTTP arasındaki fark

Sözdizimi açısından HTTPS, HTTP protokolüyle aynıdır. Yani, aynı başlangıç ​​satırlarını ve başlıkları kullanır. Tek fark, ek şifreleme ve varsayılan bağlantı noktasıdır (443) . HTTPS, HTTP ve TCP arasında, yani uygulama ve taşıma katmanları arasında şifrelenir. Bunun ne anlama geldiğini unuttuysanız, OSI modeli hakkındaki makaleye göz atın . Günümüzün şifreleme standardı TLS'dir. Bu konuya fazla girmeyeceğiz, ancak şifrelemenin bilgi aktarım katmanına ulaşmadan önce gerçekleştiğini unutmayın.. HTTPS'de, isteğin gönderildiği ana bilgisayar ve bağlantı noktası dışında kesinlikle tüm bilgiler şifrelenir. Bir sunucuyu HTTP yerine HTTPS protokolünü kullanacak şekilde değiştirmek, sunucu kodunu değiştirmek için kullanım gerektirmez. Bu özellik, sonraki makalelerde tartışacağımız servlet kapsayıcılarında etkinleştirilir. Ve bugünlük bu kadar. Aslında, bir dakika bekleyin. Bazı HTTP isteklerine ulaşmak için Google Chrome'u açın, F12'ye basın ve "Ağ" sekmesini seçin. Tarayıcınız tarafından gönderilen/alınan tüm istekler ve yanıtlar burada görüntülenecektir. Bölüm 4. Maven'in temelleri Bölüm 5. Servlet'ler ve Java Servlet API'si. Basit bir web uygulaması yazmak Bölüm 6. Servlet kapsayıcıları Bölüm 7. MVC (Model-View-Controller) modeline giriş
Yorumlar
  • Popüler
  • Yeni
  • Eskimiş
Yorum bırakmak için giriş yapmalısınız
Bu sayfada henüz yorum yok