Cấu tạo của một yêu cầu
Bài học 20 trên 47 trong khóa học Mạng máy tính với terminal của Coddy.
Bên dưới curl, một yêu cầu HTTP là văn bản thuần được gửi qua socket. Yêu cầu bắt đầu bằng một dòng cho biết bạn muốn gì:
GET /index.html HTTP/1.1Có ba phần: phương thức (loại thao tác), đường dẫn (thứ bạn muốn truy cập) và phiên bản. Tiếp theo là các header, mỗi header trên một dòng, rồi một dòng trống và cuối cùng là phần thân không bắt buộc.
Dòng trống không phải để trang trí. Nhờ nó, máy chủ biết phần tiêu đề đã kết thúc và phần nội dung, nếu có, bắt đầu. Yêu cầu không có dòng này sẽ bị treo vì máy chủ vẫn chờ nhận phần còn lại.
Bạn có thể tự gửi dòng này. nc mở một kết nối thô, và mọi thứ bạn nhập sẽ được gửi thẳng qua đường truyền:
printf 'GET / HTTP/1.0\r\n\r\n' | nc 127.0.0.1 9110\r\n là ký tự kết thúc dòng mà HTTP yêu cầu, còn cặp thứ hai tạo thành dòng trống đó.
Thử thách
KhóBỏ qua curl hoàn toàn và tự gửi yêu cầu HTTP.
- Tạo tệp
index.htmlchứaraw - Chạy máy chủ cho thư mục trên cổng 9110
- Gửi yêu cầu
GET /index.html HTTP/1.0thô quancvà chỉ in dòng đầu tiên trong phản hồi
Dòng đầu tiên đó là dòng trạng thái của máy chủ. Đầu ra dự kiến:
HTTP/1.0 200 OKNhớ dòng trống:
printf 'GET /index.html HTTP/1.0\r\n\r\n'.
Tự làm thử
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Mạng máy tính với terminal
5Tự xử lý HTTP
Cấu tạo của một yêu cầuPhương thức yêu cầuMã trạng tháiHeader phản hồiViết phản hồiÔn tập: kiến thức cơ bản về HTTPTự luyện tập: Playground Terminal