* Nguồn bài viết tại đây.
* Tham khảo thêm tài liệu tiếng Anh rất chi tiết tại đây.
I) HTTP REQUEST MESSAGE
Khi Client gửi một yêu cầu lên sever như tải một trang web nào đó, hay đăng nhập vào trang nào đó thì Client sẽ gửi một HTTP MESSAGE có cấu trúc như mẫu ví dụ sau:
· | Dòng đầu tiên trong Request Message được gọi là "Request Line" và có cấu trúc: |
Request Method - Request URI - HTTP-version
|
Request Method
|
Là yêu cầu của đoạn message, ví dụ : GET, POST, HEAD, OPTIONS.....
|
Request URI
|
Là đường dẫn yêu cầu gửi đến. Ví dụ: /doc/test.html
|
HTTP-version
|
Phiên bản HTTP. Bây giờ phiên bản thông dụng nhất là "HTTP/1.1"
|
· | Các dòng còn lại từ dòng thứ 2 trở đi của Request Message là các Request Header bổ sung cho request đó. Ví dụ: Host, User-Agent, Cookie, Accept, Content-Type ... |
· | Nếu là các phương thức POST hoặc PUT thì sẽ có thêm một đoạn dữ liệu được gửi lên server để xử lí (Request Message Body) (GET cũng có nhưng rất hiếm). Ví dụ: bookId=12345&author=Tan+Ah+Teck... |
II) HTTP Response Message
Cũng như HTTP Requeset Message, HTTP Respone Message cũng là một HTTP Message, do đó nó có cấu trúc của 1 HTTP Message như mẫu ví dụ sau:
· | Dòng đầu tiên của Respone Message được gọi là "Status Line" (Dòng trạng thái) và có cấu trúc: |
HTTP-version - Status Code - Reason Phrase
|
HTTP-version
|
Phiên bản HTTP. Bây giờ phiên bản thông dụng nhất là "HTTP/1.1"
|
Status Code
|
Mã phản hồi tiêu chuẩn do máy chủ gửi về. Ví dụ: 200, 301, 500...
|
Reason Phrase
|
Giải thích ngắn gọn về mã phản hồi do máy chủ gửi về
|
Ví dụ: HTTP/1.1 200 OK hoặc HTTP/1.0 404 Not Found hoặc HTTP/1.1 403 Forbidden..
· | Các dòng tiếp theo từ dòng thứ 2 của Respone Message là các Respone Header bổ sung. Ví dụ: Content-Type, Content-Length, Connection: Keep-Alive |
III) HTTP Request Methods
Một client có thể sử dụng một trong số những phương thức sau để gửi Request Message đến Http Server là:
Method
|
Meaning
|
GET
|
A client can use the GET request to get a web resource from the server.
|
HEAD
|
A client can use the HEAD request to get the header that a GET request would have obtained. Since the header contains the last-modified date of the data, this can be used to check against the local cache copy.
|
POST
|
Used to post data up to the web server.
|
PUT
|
Ask the server to store the data.
|
DELETE
|
Ask the server to delete the data.
|
TRACE
|
Ask the server to return a diagnostic trace of the actions it takes.
|
OPTIONS
|
Ask the server to return the list of request methods it supports.
|
CONNECT
|
Used to tell a proxy to make a connection to another host and simply reply the content, without attempting to parse or cache it. This is often used to make SSL connection through the proxy.
|
IV) HTTP Status Code
Những Status Code thường gặp:
Code
|
Status
|
Meaning
|
2xx Success
|
200
|
OK
|
Standard response for successful HTTP requests. The actual response will depend on the request method used. In a GET request, the response will contain an entity corresponding to the requested resource. In a POST request, the response will contain an entity describing or containing the result of the action.
|
201
|
Created
|
The request has been fulfilled, resulting in the creation of a new resource.
|
204
|
No Content
|
The server successfully processed the request and is not returning any content.
|
206
|
Partial Content
|
The server is delivering only part of the resource (byte serving) due to a range header sent by the client. The range header is used by HTTP clients to enable resuming of interrupted downloads, or split a download into multiple simultaneous streams.
|
3xx Redirection
|
301
|
Moved Permanently
|
This and all future requests should be directed to the given URI..
|
302
|
Found
|
The HTTP/1.0 specification (RFC 1945) required the client to perform a temporary redirect (the original describing phrase was "Moved Temporarily")
|
303
|
See Other
|
The response to the request can be found under another URI using a GET method. When received in response to a POST (or PUT/DELETE), the client should presume that the server has received the data and should issue a redirect with a separate GET message.
|
4xx Client errors
|
400
|
Bad Request
|
The server cannot or will not process the request due to an apparent client error (e.g., malformed request syntax, size too large, invalid request message framing, or deceptive request routing).
|
401
|
Unauthorized
|
Similar to 403 Forbidden, but specifically for use when authentication is required and has failed or has not yet been provided. The response must include a WWW-Authenticate header field containing a challenge applicable to the requested resource.
|
403
|
Forbidden
|
The request was valid, but the server is refusing action. The user might not have the necessary permissions for a resource, or may need an account of some sort.
|
404
|
Not Found
|
The requested resource could not be found but may be available in the future. Subsequent requests by the client are permissible.
|
429
|
Too Many Requests
|
The user has sent too many requests in a given amount of time.
|
5xx Server errors
|
500
|
Internal Server Error
|
A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.
|
502
|
Bad Gateway
|
The server was acting as a gateway or proxy and received an invalid response from the upstream server
|
503
|
Service Unavailable
|
The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.
|
|