Dạo này công việc và cuộc sống đã cuốn mình vào vòng xoáy lúc nào không hay. Thời gian để viết bài, chăm chút cho blog cũng ít hẳng đi. Không thể để vết trượt này kéo dài thêm nữa. Nó ngồi một góc quán cà phê suy nghĩ về cuộc đời và bắt đầu viết blog.
Nó vừa mới chuyển trọ, ban đầu tính ở một mình, nhưng tình cờ dòng đời xô đẩy nên nó dọn về ở với ông anh họ một vài tháng. Cuộc đời đẩy nó từ bất ngờ này đến bất ngờ nọ. Việc là, đã từ rất lâu rồi, nó đã không được xem chương trình thời sự tivi trên VTV3, thể thao 24h hay các game show truyền hình các kiểu con đà điểu. Tính ra kể từ lúc đi học đại học tới lúc đi làm tời giờ thì xem tivi đối với nó là một điều gì đó rất chi là xa xỉ.
Ban đầu nó nghĩ là xem tivi sẽ rất mất thời gian vô bổ, nhưng một chút cám dỗ từ ông anh họ (lý do hợp lý nhất mà nó nghĩ ra) đã lôi nó vào xem một vài chương trình tivi, và nó phát hiện ra rằng nếu quản lý tốt thời gian thì bạn có thể dành ra 1 giờ trên ngày để xem các chương trình tivi này nọ, cũng có những thú vị đáng giá không ngờ.
Cầm cái “Mót” tivi nhấn nhấn, không hiểu sao nó chợt nghĩ về cái blog “thuancuder.com” mốc meo, ý tưởng nảy nở, nó nhớ ra có một seri bài viết mà hình như là có liên quan tới cái “Mót” này. Giá trị từ việc xem tivi đến nhanh bất ngờ. 🙂
Ở bài viết trước (cách đây cũng 7-8 tháng rồi thì phải), mình đã giới thiệu các bạn “website là gì có ăn được không” thì bài này mình sẽ đi sâu một chút về quá trình đầu tiên khai thác thông tin một website đứng từ góc độ người dùng nhé.
Ở đây mình xin giới thiệu trình duyệt “Chrome” (Chôm), là cái mà được cài trên máy các bạn vào để lướt web, facbook hàng ngày đó. Bản chất nó là một phần mềm như bao phần mềm khác như Microsoft Word hay Execel bạn hay dùng thôi à.
Trở lại với cái tivi, mỗi lần bạn muốn chuyển kênh, cách phổ biến là các bạn sẽ dí cái “mót” vào bấm nút chuyển kênh để xem chương trình mình muốn, lúc này cái “mót” sẽ có nhiệm vụ chuyển thông tin cho tivi nhé. Còn đối với trường hợp xem một trang website nào đó thì sao. Cách thông thường là bạn sẽ gõ “địa chỉ trang web” từ bàn phím lên thanh “URL”. Lúc này bàn phím sẽ chuyển thông tin cho trình duyệt “chôm” tương tự như cách mà “mót” làm với tivi vậy.
Bước tiếp theo, mình sẽ giải thích một cách đơn giản nhất nhé: Đối với tivi, nó sẽ bắt tần sóng kênh, và hiển thị âm thanh, hình ảnh lên mà hình tivi. Còn đối với “chôm”, nó sẽ gửi thông tin lên cái gọi là “Server”, sau khi xử lý, “Server” sẽ trả thông tin (hình ảnh, âm thanh..) về cho “chôm”. Khi đó “chôm” sẽ xử lý và hiển thị cho người xem thông qua màn hình.
“Chôm” và Cái đầu “Header”.
Để “Server” trả dữ liệu về, anh “chôm” này cần gửi đúng những thông tin quy định cần thiết nhé (giống như bạn muốn cua gái thì có tiền trong vý trước đã, rồi phải có giấy chứng thực trai còn zin hay gì đó đưa cho bạn gái xem nhé :)), chứ không phải đi tay không hay muốn gửi gì thì gửi đâu nè. Một trong số đó là “HTTP HEADER” hay nói gọn là “header” (dịch ra là phần đầu). Vậy cái “header” này chứa những thông tin gì ?. Mình sẽ lấy một ví dụ cụ thể để các bạn thấy rõ hơn nhé. Ví dụ khi bạn mở anh “Chôm” gõ địa chỉ “xemxongsuong.com” (môt trang học tập bổ ích nhé). Khi đó anh “chôm” sẽ gửi một cái “header” đến “server” bao gồm những thông tin cơ bản như sau”:
- Host là thông tin về internet host của trang web học tâp quen thuộc ha, có thể hiểu là địa chỉ website như là “xemxongsuong.com” cho đơn giản nhé, còn về “port” nó là cái cổng kết nối anh “chôm” và chị “sever” với nhau (mình sẽ tìm hiể u rõ hơn trong một bài viết khác nhé).
Cấu trúc Host
Host: host [:port];
Phần port sẽ là trống nếu như sử dụng port mặc định 80. - User-Agent là thông tin về browser, ở đây mình dùng Google Chrome version 53.0.2, có thể hiểu là tên trong giấy khai sinh của anh “chôm” đó nhé, bao gồm cả ngày tháng năm sinh (phiên bản phát hành nào luôn).
- Accept là kiểu dữ liệu mà sẽ nhận được từ response, response mà dại trả về khác kiểu thì sẽ bị ban ngay. Thường thấy nhất là các kiểu text/html, application/xhtml+xml. Như ví dụ trên thì thông tin nhận sẽ là html (văn bản, video về học tập nhé, còn những kiểu định dạng khác mang nội dung đồi trụy thì anh “chôm” sẽ không nhận đâu nhé).
Cấu trúc Accept
Accept: type/subtype [q=value] - Accept-Encode là nơi khai báo kiểu mã hóa nội dung mà request chấp nhận, nếu server trả về nội dung mã hóa khác với kiểu mã hóa đã khai báo thì tất nhiên là client sẽ không nhận rồi.
Một số kiểu encode thường gặp: gzip, compress, br, deflate, *, identity,…
Cấu trúc Accept-Encode
Accept-Encoding: gzip, deflate - Cookie là nơi chứa thông tin được mã hóa dùng để gửi lên server (sau khi đã được website gửi về để lưu trữ trước đó). Mà đã mã hóa thì dĩ nhiên nó quan trọng, còn việc chứa thông tin gì thì do website quy định nên mình cũng không biết được. Ngoài ra session đôi khi sẽ dựa vào cookie để giúp server phân biệt ai là người đang gửi request. Có thể hiểu đây là những thông tin ngầm mà chị “server” với anh “chôm” giao tiếp với nhau, ví dụ như thời gian địa điểm hẹn hò riêng chẳng hạng.
- Upgrade-Insecure-Requests là cảnh báo của trình duyệt đối với những giao thức http vì hiện nay nó đã không còn an toàn và có nguy cơ bị đánh cắp dữ liệu (đặc biệt là thông tin đăng nhập, tài khoản ngân hàng). Cách tốt nhất hiện nay là nâng cấp lên https để dữ liệu truyền tải được an toàn hơn.
Còn rất nhiều thông số khác nữa, mình chỉ liệt kê ra một số thông số thường được sử dụng.
Cái bên trên đây gọi là REQUEST HEADER, sau khi khi mọi thứ ok, server sẽ trả về cái gọi là RESPONSE HEADER. Response về khi thực hiện request như trên, các thông tin trong header mà server trả về cũng rất dễ hiểu.
- Date là thời gian và múi giờ của server trong lúc mình truy cập. Nó là múi giờ GMT vì server cấu hình như vậy thôi các bạn.
- Content-Type là kiểu thông tin mà server trả về cho client, nó phải phù hợp với cái Accept mà client request tới.
- Last-Modified là thời gian chỉnh sửa lần cuối mà server ghi nhận được của nội dung mà bạn cần lấy.
Nếu các bạn muốn biết thêm chi tiết thêm các thông số thì vào đây nhé : https://en.wikipedia.org/wiki/List_of_HTTP_header_fields.
Loằng nhằng quá nhỉ, túm cái váy lại các bạn hiểu thế này:
Anh trình duyệt “chôm” gửi yêu cầu hẹn hò lên chị “server”. Trong cái yêu cầu đó có một cái gọi là “header” có những thông tin mà anh “chôm” show hàng là tao có những cái này (đẹp trai, con nhà giàu, khoai to, học giỏi …). Anh server thấy thơm kèo thì trả lời “OK” đồng ý sáp vô ngay. Còn nếu thấy anh này “xạo liên minh huyền thoại(lol) chấm com” thì nói “NO” thẳng thừng, cho anh “chôm” này lui, kiếm anh khác thơm hơn. Lẽ thường tình thì trong bất kì trường hợp nào thì chị “server” cũng phải trả lời anh “chôm” cho phải phép nhé. Chỉ có trường hợp là anh “server” ngủ quên hay lìa đời thôi (sever die).
Đến đây bài viết đã dài, mình xin dừng câu chuyện anh “chôm”, chị “server” và anh tivi lại đây nhé. Rất mong các bạn có cài nhìn tổng quan hơn về trình duyệt và website bước đầu hoạt động như thế nào nhé.