HTTP
HyperText Transfer Protocol
What is HyperText?
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
Don't say HyperText!
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...
What is HTTP?
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
HTTP
HTTP connections
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
HTTP Request Methods
Một client sẽ sử dụng 1 trong những methods để gửi một HTTP Requests tới server
- GET
- POST
- PUT
- DELETE
- HEAD
- OPTIONS
- Bạn ơi cho mình xin ít resource
- Tôi muốn gửi cho bạn ít data
- I want to change a resource!!!!!
- Xóa dùm em cái
- Mình chỉ muốn response headers
- What methods can I use?
HTTP Request URI
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ụ:
URL
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
HTTP Request
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
HTTP Request
The HTTP Request Message bao gồm Header và Body
ngăn cách nhau bởi một dòng trống
HTTP Request
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
HTTP Request
[METHOD] [Request URI] [HTTP Version]
Header Request Line
The request line adheres to this format
Ví dụ
GET /index.html HTTP/1.1 GET / HTTP/1.1 POST /login HTTP/1.1
HTTP Request
Headers
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
HTTP Request
Body
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
HTTP Response
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
HTTP Response
Message
Một HTTP Response Message có cấu trúc giống một HTTP Request Message
HTTP Response
Status Line
[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
HTTP Response
Headers
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
HTTP Response
Body
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>...
HTTP Status Code
Information responses
Nó có nghĩa là yêu cầu được nhận và quá trình này được tiếp tục.
HTTP Status Code
Successful responses
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
...
HTTP Status Code
Redirection messages :
Dữ liệu bị điều hướng
HTTP Status Code
Client error responses
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
HTTP Status Code
Server error responses
Lỗi của server
How SSL works?
Secure Sockets Layer
- Hùng muốn gửi Linh một thông tin mà Hùng muốn chỉ có Linh đọc được
-
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:
Authentication
session
token
session
token
SESSION
- Khó mở rộng. vì khi bộ nhớ lớn. Phục vụ nhiều người thì sẽ tốn dung lượng lưu trữ.
- cookie chỉ sử trong domain quy đình
JWT
- Không cần lưu trữ nên dễ dàng mở rộng.
- Dễ dàng sử dụng cho nhiều domain
HTTP
Resources
HTTP
By nghiatv
HTTP
Basics
- 327