CodeGym /Java Blog /Acak /Bagian 3. HTTP/HTTPS
John Squirrels
Level 41
San Francisco

Bagian 3. HTTP/HTTPS

Dipublikasikan di grup Acak
Materi ini merupakan bagian dari seri "Pengantar Pengembangan Usaha". Artikel sebelumnya: Bagian 3. HTTP/HTTPS - 1Hai! Hari ini kita akan belajar tentang protokol HTTP dan HTTPS. Tapi pertama-tama, mari kita perjelas satu hal: kita berbicara tentang protokol untuk mengirim data melalui jaringan pada tingkat aplikasi model OSI. Anda mungkin ingat bahwa kita mengenal model OSI di salah satu artikel sebelumnya. Jika Anda tidak ingat itu, ini dia .

Apa itu protokol komunikasi data?

Inilah yang kami sebut seperangkat aturan yang disepakati yang memungkinkan pengembang berbagai layanan mengirimkan informasi dalam format yang dapat dipahami orang lain. Misalnya, Anda dapat menggunakan Google Chrome untuk mendapatkan informasi dari Facebook dan Twitter, karena pengembang mengirimkannya menggunakan protokol HTTP standar, yang memungkinkan browser Anda memprosesnya. Aturan seragam sangat nyaman bagi orang-orang yang mengembangkan bagian server: ada banyak perpustakaan yang dapat mengonversi informasi untuk Anda dan mengirimkannya menggunakan protokol yang sesuai. HTTP awalnya disusun sebagai protokol untuk mengirim halaman HTML. Begitulah cara ini digunakan untuk waktu yang lama, tetapi sekarang pemrogram sering menggunakannya untuk mengirim string dan file media. Secara umum, protokol ini diterima secara universal dan serbaguna, dan sangat mudah digunakan. Dan sekarang kita akan menyelidiki cara menggunakannya.

Struktur HTTP

Kami harus segera mencatat bahwa protokol HTTP hanya terdiri dari teks. Yang paling menarik bagi kami adalah struktur teks ini. Setiap pesan terdiri dari tiga bagian:
  1. Garis awal — Ini mendefinisikan beberapa data tata graha.
  2. Header — Ini menjelaskan parameter pesan.
  3. Isi — Ini adalah isi pesan. Badan harus dipisahkan dari header dengan baris kosong.
Protokol HTTP digunakan untuk mengirim permintaan ke server dan menerima tanggapan dari server. Parameter permintaan dan tanggapan sedikit berbeda.

Berikut tampilan permintaan HTTP sederhana:


GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Garis start menunjukkan:
  • GET — Metode permintaan
  • / — Jalur permintaan
  • HTTP/1.1 — Versi protokol
Lalu datanglah tajuk:
  • Host — Host tempat permintaan ditujukan
  • User-Agent — Klien mengirimkan permintaan
Badan pesan tidak ada. Dalam permintaan HTTP, hanya baris awal dan tajuk "Host" yang diperlukan. Sekarang mari kita lihat semuanya selangkah demi selangkah. Permintaan HTTP harus berisi beberapa metode. Ada sembilan di antaranya: DAPATKAN, POST, PUT, OPTIONS, HEAD, PATCH, DELETE, TRACE, CONNECT. Yang paling umum adalah GET dan POST. Kedua metode ini akan cukup pada awalnya. DAPATKAN — Metode ini meminta konten dari server. Oleh karena itu, permintaan dengan metode GET tidak memiliki isi pesan. Namun jika perlu, Anda dapat meneruskan parameter melalui jalur (di baris awal) dalam format berikut:

https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
di mana codegym.cc adalah tuan rumah, /send adalah jalur permintaan, dan ? adalah pemisah yang menunjukkan bahwa parameter kueri mengikuti. Di bagian akhir, pasangan kunci-nilai ("key=value") dicantumkan, dipisahkan dengan ampersand. POST — Metode ini menerbitkan informasi di server. Permintaan POST dapat mengirim berbagai jenis informasi: parameter sebagai pasangan "key=value", JSON, kode HTML, atau bahkan file. Semua informasi dikirim dalam isi pesan. Misalnya:

POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc

{
  "Id": 12345,
  "User": "John"
}
Permintaan dikirim ke codegym.cc/user/create/json, dan versi protokolnya adalah HTTP/1.1. "Terima" menunjukkan format respons yang diharapkan diterima klien. "Content-Type" menunjukkan format badan pesan yang dikirim dalam permintaan. "Panjang Konten" adalah jumlah karakter dalam isi. Permintaan HTTP dapat berisi banyak header yang berbeda. Untuk informasi lebih lanjut, lihat spesifikasi protokol .

Respons HTTP

Setelah menerima permintaan, server memprosesnya dan mengirimkan respons ke klien:

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>
Baris awal respons berisi versi protokol (HTTP/1.1), kode status (200), dan deskripsi status (OK). Headernya mencakup jenis dan panjang konten. Badan respons berisi kode HTML yang dirender browser sebagai halaman HTML.

Kode status respons

Semuanya jelas mengenai badan pesan dan tajuk, tetapi kami harus mengatakan beberapa patah kata tentang kode status. Kode status respons selalu tiga digit. Digit pertama kode menunjukkan kategori respons:
  • 1xx — Informasi. Permintaan itu diterima. Server siap melanjutkan.
  • 2xx — Berhasil. Permintaan diterima, dipahami, dan diproses.
  • 3xx — Pengalihan. Tindakan tambahan harus dilakukan untuk memproses permintaan.
  • 4xx — Kesalahan Klien. Permintaan mengandung kesalahan atau tidak sesuai dengan protokol.
  • 5xx — Kesalahan Server. Permintaan disusun dengan benar, tetapi server tidak dapat memprosesnya.
Digit kedua dan ketiga dalam kode menunjukkan respons yang lebih spesifik. Misalnya:
  • 200 OK — Permintaan telah diterima dan berhasil diproses.
  • 201 Dibuat — Permintaan diterima dan berhasil diproses, menghasilkan pembuatan sumber daya atau instans baru.
  • 301 Dipindahkan Secara Permanen — Sumber daya yang diminta dipindahkan secara permanen. Permintaan selanjutnya harus dibuat menggunakan alamat baru.
  • 307 Pengalihan Sementara — Sumber daya telah dipindahkan sementara. Untuk saat ini, dapat diakses menggunakan penerusan otomatis.
  • 403 Terlarang — Permintaan dipahami, tetapi diperlukan otorisasi.
  • 404 Tidak Ditemukan — Server tidak menemukan sumber daya di alamat ini.
  • 501 Tidak Diimplementasikan — Server tidak mendukung fungsionalitas yang diperlukan untuk merespons permintaan.
  • 505 Versi HTTP Tidak Didukung — Server tidak mendukung versi protokol HTTP yang ditentukan.
Selain kode status respons, deskripsi status juga dikirimkan. Ini membantu memperjelas apa arti setiap status tertentu. Protokol HTTP sangat praktis: menyediakan sejumlah besar header, yang dapat Anda gunakan untuk mengatur komunikasi yang sangat fleksibel antara klien dan server. Pertimbangan penuh dari semua header permintaan dan respons, metode permintaan, dan kode status respons akan terlalu banyak untuk satu artikel. Jika perlu, Anda dapat membaca spesifikasi resmi protokol, yang menjelaskan semua nuansa. Merupakan kebiasaan untuk menggunakan protokol HTTP pada port 80, jadi ketika Anda melihat URL yang diakhiri dengan port 80, Anda dapat yakin bahwa Anda perlu menggunakan HTTP untuk mengaksesnya. Ketika teknologi berkembang dan data pribadi mulai dikirim melalui Internet, perlu dipikirkan tentang bagaimana memberikan perlindungan tambahan untuk informasi yang dikirim klien ke server. Hasil dari pemikiran ini adalah protokol HTTPS.

Perbedaan antara HTTPS dan HTTP

Dari segi sintaks, HTTPS identik dengan protokol HTTP. Artinya, ia menggunakan garis awal dan tajuk yang sama. Satu-satunya perbedaan adalah enkripsi tambahan dan port default (443) . HTTPS dienkripsi antara HTTP dan TCP, yaitu antara lapisan aplikasi dan transport. Jika Anda lupa artinya, lihat artikel tentang model OSI . Standar enkripsi saat ini adalah TLS. Kami tidak akan membahas topik ini terlalu banyak, tetapi ingat bahwa enkripsi terjadi sebelum informasi mencapai lapisan transport. Di HTTPS, benar-benar semua informasi dienkripsi, kecuali host dan port tempat permintaan dikirim. Mengalihkan server untuk menggunakan protokol HTTPS alih-alih HTTP tidak memerlukan penggunaan untuk mengubah kode server. Fitur ini diaktifkan di wadah servlet, yang akan kita bahas di artikel selanjutnya. Dan itu saja untuk hari ini. Sebenarnya, tunggu sebentar. Untuk mendapatkan beberapa permintaan HTTP, buka Google Chrome, tekan F12, dan pilih tab "Jaringan". Semua permintaan dan tanggapan yang dikirim/diterima oleh browser Anda akan ditampilkan di sini. Bagian 4. Dasar-dasar Maven Bagian 5. Servlet dan Java Servlet API. Menulis aplikasi web sederhana Bagian 6. Servlet containers Bagian 7. Memperkenalkan pola MVC (Model-View-Controller)
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION