HyperText Transfer Protocol
một khái niệm siêu cũ và nhàm chán!
HyperText đơn giản là một màn hình chứa toàn text và các đường dẫn (HyperLinks) sang các HyperText khác.
Hyper text có thể là plain text, dữ liệu có cấu trúc (structured data), hyperlinks, bảng dữ liệu, hình ảnh, video ... mà màn hình có thể hiển thị được
Chúng ta sẽ không phải quan tâm quá nhiều đến HyperText
Chủ yếu là chúng ta sẽ làm việc với HTTP và HTML
Nội dụng sẽ nằm trong các HTML content, XML data, JSON document...
một phương thức truyền tải dữ liệu siêu văn bản?
HTTP là một "ngôn ngữ" để nói chuyện giữa máy chủ (server) và các máy khách (client)
Internet Data
Một HTTP client gửi HTTP requests
và một HTTP server đồng ý HTTP requests đó, và trả cho client đó một HTTP response
Cổng mặc định của http connections là cổng 80
Các http connections được tạo ra và dữ liệu được gửi thông qua sockets
Mỗi khi server phản hồi thì sockets lại được đóng lại
Một client sẽ sử dụng 1 trong những methods để gửi một HTTP Requests tới server
Uniform Resource Identifier
URI là cách mà server biết được resource nào mà client mong muốn
/index.html
/map/21.3088569,-157.8084575
Ví dụ:
A URL cũng là URI nhưng bổ sung thêm protocol nào xử lý.
Uniform Resource Locator
https://www.google.com
http://www.devleague.com/apply
Vi dụ:
https://www.google.com
http://www.devleague.com:80/apply
http://162.243.46.54:80/parting-thoughts-from-a-student/
Protocol
Host address
path
port
cổng mặc định của HTTP là 80
The HTTP Request Response cycle starts with the HTTP Request
Một HTTP Request là một kết nối của client tới server và gửi một Request Message
The HTTP Request Message bao gồm Header và Body
ngăn cách nhau bởi một dòng trống
The HTTP Request Message Header bao gồm
một Request Line chính là dòng đầu tiên,
và Request Headers chứa các cặp giá trị của header
[METHOD] [Request URI] [HTTP Version]
The request line adheres to this format
Ví dụ
GET /index.html HTTP/1.1 GET / HTTP/1.1 POST /login HTTP/1.1
Key - value ngăn cách nhau bởi dấu ":"
multiple values thì ngăn cách với dấu ","
Host: www.devleague.com
Connection: Keep-Alive
Accept: text/html, application/json
Date: Wed, 8 Jul 2015 11:12:31 GMT
Một request body sẽ được sử dụng để gửi dữ liệu lên server.
Phần nội dung của request body sẽ bắt đầu sau dòng trống phía dưới Request header.
Content-Length cho mình biết kích thước của Request body
POST /apply HTTP/1.1 Host: www.devleague.com Connection: Keep-Alive Accept: text/html, application/json Content-Length: 278
firstName=test&lastName=test&email=test%40test.com&phone=8082233899&address1=test&address2=&city=test&state=test&postal=test&country=US&track=55103a9f50b6d0603be3f71b&status=total+noob&employment=student&whyAttend=test&aboutSelf=test&reference=test&referral=&applyScholarship=no
Một HTTP Response là phản hồi của server lại cho client.
HTTP Request gửi một thông điệp và mong muốn một tài nguyên
Một HTTP Response Message có cấu trúc giống một HTTP Request Message
[HTTP Version] [HTTP Status Code] [Reason Phrase]
Status line có cú pháp như sau
Examples
HTTP/1.1 200 OK HTTP/1.0 404 Not Found HTTP/1.1 403 Forbidden HTTP/1.1 500 Internal Server Error HTTP/1.1 302 Found HTTP/1.1 304 Not Modified
Cặp key- value ngăn cách nhau bởi dấu ":"
Nhiều giá trị thì ngăn cách nhau bởi dấu ","
HTTP/1.1 200 OK Server: nginx/1.4.6 (Ubuntu) Date: Wed, 08 Jul 2015 22:31:15 GMT Content-Type: text/html; charset=utf-8 Content-Length: 40489 Connection: keep-alive
Body chứa resource mà request yêu cầu.
Headers thường chứa cái mô tả về cách xử lý body. (y)
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Wed, 08 Jul 2015 22:31:15 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 40489
Connection: keep-alive
<html class="no-js" lang="en">
<head>...
Nó có nghĩa là yêu cầu được nhận và quá trình này được tiếp tục.
Nó nghĩa là hoạt động đã được nhận, được hiểu, và được chấp nhận một cách thành công.
203 Non-Authoritative Information
...
Dữ liệu bị điều hướng
Lỗi từ phía người dùng
400 Bad Request : Server không hiểu gì hết.
401 Unauthorized : Cần đăng nhập để sử dụng
403 Forbidden : Yêu cầu bị cấm.
404 Not Found : Không tìm thấy gì hết trơn
Lỗi của server
Secure Sockets Layer
Linh gửi cho Hùng một chiếc hộp có khoá đã mở sẵn và giữ lại chìa khoá
Hùng nhận được chiếc hộp đó, bỏ cuộn băng chứa thông tin cần gửi vào đó và khoá sập lại, sau khi khoá ngay bản thân Hùng cũng không thể mở khoá
Hùng gửi lại chiếc hộp cho Linh
Linh nhận và sử dụng chìa khoá duy nhất của mình để mở và xem cuộn băng đó.
Hiểu đơn giản như sau: