Nội dung chính
Http là viết tắt của từ gì? Đây là một trong những cụm từ bắt đầu cho địa chỉ một trang website nên rất quen thuộc với người dùng internet hay làm việc, kinh doanh online. Khi sử dụng sử dụng trình duyệt để truy cập Internet, chúng ta đều thấy tất cả các trang website đều bắt đầu với http:// hay https:// nhưng chưa nắm rõ chúng có ý nghĩa gì ? Làm Web xin được chia sẻ những thông tin hữu ích liên quan đến cụm từ HTTP này trong bài viết chuyên mục hôm nay.
Http là viết tắt của từ gì?
HTTP là từ viết tắt của Hypertext Transfer Protocol nghĩa là giao thức truyền tải siêu văn bản được sử dụng trong world wide web. Xuất hiện lần đầu vào những năm 90, giao thức HTTP đã mở lối tiên phong cho một kỷ nguyên 4.0 phát triển mạnh mẽ như hôm nay và cả trong tương lai.
Xét về mặt lý thuyết, bất kỳ giao thức truyền tải nào cũng có thể được sử dụng miễn sao chúng đáng tin cậy là được. HTTP là giao thức có thể mở rộng và phát triển dần theo thời gian và là ứng dụng được gửi thông qua nền tảng TCP/IP hay 1 kết nối TCP được mã hóa TLS. Nhờ đó, HTTP được sử dụng để tìm nạp các tài liệu, văn bản, hình ảnh và video. Thậm chí là để đăng tải nội dung lên server, giống như với các kết quả form HTML. HTTP cũng có thể tìm nạp các phần của các doc nhằm cập nhật các trang web theo yêu cầu.
HTTP là nền tảng của sự trao đổi dữ liệu bất kỳ nào trên web và client. Client thường là các trình duyệt hay bất kỳ loại thiết bị, chương trình nào và server là các máy tính trên đám mây. Một doc hoàn chỉnh được tái tạo từ các doc con khác nhau được fetch tìm nạp như văn bản, mô tả layout, hình ảnh, video, script v..v..
Dựa trên giao thức TCP/IP HTTP cho các yêu cầu như request hay HTTP Request được tạo bởi các web browser như chrome, firefox … được gửi đến server http, server sẽ gửi lại dữ liệu response hay HTTP response để client nhận được. Các request, response là các message này có cấu trúc đơn giản gọi là các HTTP message. Ai cũng có thể đọc được HTTP message mà không nhất thiết phải có công cụ phân tích riêng biệt. HTTP đơn giản làm giảm đi sự phức tạp khi phát triển, kiểm tra ứng dụng.
Đặc điểm cơ bản của giao thức HTTP
Tuy rằng HTTP là 1 giao thức đơn giản nhưng nó cũng khá mạnh mẽ và dễ dàng mở rộng ứng dụng nhờ vào các đặc trưng cơ bản sau đây :
- HTTP đơn giản được thiết kế để trở nên thân thiện với con người có thể đọc được. Thậm chí giao thức HTTP/2 mang thêm chút phức tạp bằng cách đóng gói các HTTP message thành các frame. Chúng ta có thể đọc và hiểu được HTTP message cung cấp khả năng testing hơn cho các dev và giảm thiểu độ phức tạp cho người dùng mới.
- HTTP có thể mở rộng: nhờ các header HTTP làm cho giao thức còn có khả năng thử nghiệm tạo ra nhiều chức năng. Các chức năng mới này được giới thiệu bằng 1 thỏa thuận đơn giản giữa 1 client và 1 máy chủ về ngữ nghĩa của 1 header mới.
- HTTP là stateless, nhưng không sessionless: Không có liên kết giữa 2 yêu cầu được thực hiện liên tiếp trên cùng 1 kết nối là vấn đề khó khăn với người dùng cố gắng tương tác với các trang nhất định. Chẳng hạn như sử dụng shopping cart trên các trang thương mại điện tử e-commerce. HTTP cốt lõi là stateless, các cookie HTTP cho phép sử dụng các session trạng thái có khả năng mở rộng header. Các cookie HTTP được thêm vào quy trình vận hành, cho phép tạo các session trên mỗi yêu cầu HTTP để chia sẻ cùng 1 ngữ cảnh hay trạng thái.
Cấu trúc cơ bản của HTTP trong việc truyền tải dữ liệu Client/Server
Khi client là web browser, các Http API trong ngôn ngữ lập trình … kết nối đến server để gửi yêu cầu request và lấy về dữ liệu trả về response từ server thì nó trải qua các bước:
Mở kết nối TCP – Kết nối TCP trên địa chỉ xác định bởi URL (Uniform Resource Locator) và cổng thường là 80, kết nối này được dùng để gửi các yêu cầu (request) và nhận phản hồi (response). Client có thể mở ra kết nối TCP mới hoặc sử dụng kết nối đang kết nối TCP cùng lúc đến server.
Gửi HTTP message (request) là nội dung yêu cầu plain text được client tạo ra và gửi đến server. HTTP message có nội dung text có thể đọc được.
Bước đọc HTTP message nhận được từ server (response) trả về có cấu trúc tương tự HTTP message (request).
Cuối cùng là đóng kết nối hoặc sử dụng lại cho các truy vấn khác HTTP message.
HTTP Message thông điệp giữa client và server
Thông điệp HTTP có hai kiểu HTTP Message:
- HTTP request Message (Request) được gửi đi bởi client tới server để thực hiện nhiệm vụ nào đó.
- HTTP response message (response) là trả lời từ server về cho client.
Đối với phiên bản HTTP/2 thì nội dung HTTP message nội dung và ý nghĩa không đổi so với HTTP/1.1 được chứa đựng trong các frame nên chúng ta không đọc được một cách trực tiếp. Các thành phần trong bản HTTP/2 dựa vào định dạng nhị phân (binary) làm cho người không đọc được trực tiếp.
Giao thức HTTP/1.1 được chuẩn hóa năm 1997 là phiên bản mặc định trong các trình duyệt, server http ngày nay. Phiên bản HTTP/2 chuẩn hóa năm 2015 đang dần phổ biến về tốc độ, an toàn, nén, ghép kênh và chức năng tự động sử dụng nếu server http của bạn hỗ trợ HTTP/2.
Request và Response có chung cấu trúc nhưng chia sẻ dữ liệu khác nhau, có những đặc điểm riêng. Người dùng có thể dùng Developer Tool trong trình duyệt Chrome hoặc ứng dụng Postman, Fiddler để đọc request hay response message
- Dòng đầu tiên chỉ có một dòng cho biết thông tin yêu cầu hoặc trạng thái có thể thành công hay bị lỗi của thông điệp response.
- Các HTTP header là những dòng sau dòng đầu tiên trước một dòng trắng là một tập hợp các dòng chứa thông tin về HTTP message và phần body.
- Một dòng trắng cho biết phần thông tin về dòng đầu và header đã gửi hết.
- Phần body chứa dữ liệu đính kèm với request như HTML Form hoặc nội dung văn bản đính kèm cùng response. Kích cỡ dữ liệu này được xác định bởi thông tin trong header.
HTTP Request Message
Dòng đầu tiên chứa thông tin để gửi tới server thực thi hành động phù hợp. Dòng này nó có chứa ba thông tin cách nhau bởi khoảng trắng, ví dụ như: post /html/http/1.1. Trong đó các thành phần sau :
HTTP method có giá trị như post, get, put cho biết yêu cầu cần được thực hiện trên server đối với một tài nguyên nào đó, cụ thể như các phương thức:
- Get cho biết Request chỉ cần lấy dữ liệu (tài nguyên).
- Post được sử dụng để cho biết Request là chuyển dữ liệu lên server, HTTP Message trường hợp này có kèm dữ liệu như HTML Form …
- Put thay thế tài nguyên nào đó bằng dữ liệu trong Request.
- Delete xóa tài nguyên
Địa chỉ URL là /html/ là tài nguyên truy vấn, có thể là URL tương đối hay tuyệt đối kể cả cổng, nếu có cổng thì viết cổng sau ký hiệu : HTTP Version cho biết phiên bản HTTP thường là HTTP/1.1.
Header của Request : có cấu trúc đó là một chuỗi của tên header, dấu và giá trị cho header được viết trên một dòng. Có rất nhiều loại header đã chuẩn hóa hoặc do người dùng tự đặt. Bạn cũng có thể tham khảo danh sách các header tại HTTP Request Header. Host là header chỉ ra host (domain, IP) và cổng của server mà Request gửi đến. Nếu không chỉ rõ port thì mặc định là 80 với http và 443 với https.
Ví dụ: Host: lamweb.net
Accept trong Request cho biết kiểu nội dung trả về mà client có thể hiểu. Các kiểu cách nhau có độ ưu tiên mặc định 1, nếu muốn xác định độ ưu tiên cho kiểu nào thì cho thêm.
Content-Length cho biết độ dài của phần body nếu có đính kèm trong request tính theo đơn vị là byte. Content-Type trong Request, header này cho server biết kiểu dữ liệu trong phần body.
Cookie header này gửi giá trị cookie lấy được từ truy vấn trước để server phục hồi phiên làm việc. Có thể gửi nhiều cookie cách nhau. Trong ứng dụng PHP mặc định tên Cookie là PHPSESSID. Vì vậy tại server PHP (backend) đọc được giá trị này và phục hồi Session.
Body của Request: Chứa dữ liệu của Request có kiểu xác định ở header Content-Type và độ dài Content-Length, không phải tất cả http request đều có body, thường là HTML Form hay JSON.
HTTP response message
Dòng đầu tiên: còn gọi là dòng trạng thái, nó chứa ba mẩu tin gồm
- Phiên bản HTTP, ví dụ HTTP/1.1
- Mã trả về như 200, 404, 301, 302 …
- Đoạn text ngắn giải thích mã như OK, Not Found, Moved Permanently …
Đây là một dòng trạng thái HTTP/1.1 301 Moved Permanently
Header của Response: tương tự như header của Request, một số header của Response , ví dụ như date chứa thông tin ngày tháng thông tin (response) được phát sinh.
Date: Wed, 21 Oct 2015 07:28:00 GMT
Set-Cookie header này chứa cookie của server gửi cho client. Client lưu lại để gửi lại cho server để phục hồi phiên làm việc. Có những header giống header của Request như: Content-Type, Content-Length …
Body của Response: Chứa dữ liệu của Respone có kiểu xác định ở header Content-Type và độ dài Content-Length, không phải mọi Response đều có body.
Một số giá trị thiết lập như:
Max-Age=number thời gian hết hạn cookie
Http Only không cho JS truy cập Cookie
Lời kết :
Http là viết tắt của từ gì? Đó là một cách thức giao tiếp giữa client và server nhằm truyền tải dữ liệu theo mong muốn tìm kiếm của người dùng. HTTP ra đời đã làm thay đổi thế giới website khi mọi thông tin được lưu trữ và truyền tải một cách nhanh chóng đáp ứng nhu cầu của nhiều ngành nghề, lĩnh vực. Thuật ngữ http trở thành một phần không thể thiếu trong thiết kế website hay cung cấp chứng chỉ bảo mật SSL của ngành công nghệ hiện đại ngày nay.