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 HeaderBody

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,

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.

100 Continue

101 Switching Protocol

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.

200 OK

201 Created

202 Accepted

203 Non-Authoritative Information

...

HTTP Status Code

Redirection messages :

Dữ liệu bị điều hướng

300 Multiple Choice

301 Moved Permanently

302 Found

303 See Other

304 Not Modified

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

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

  1. 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ữ.
  2. cookie chỉ sử trong domain quy đình

JWT

  1. Không cần lưu trữ nên dễ dàng mở rộng.
  2. Dễ dàng sử dụng cho nhiều domain

HTTP

Resources

Made with Slides.com