Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Lập trình Web & Backend] Handshake: dựng phản hồi 101

    Handshake: dựng phản hồi 101

    Máy chủ nhận một HTTP Upgrade request. Hãy đọc header Sec-WebSocket-Key và in ra phản hồi 101 Switching Protocols đầy đủ:

    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Accept: <accept>
    

    Trong đó <accept> được tính như bài Sec-WebSocket-Accept (SHA1 của key+GUID, rồi base64). Header tên không phân biệt hoa thường khi tìm Sec-WebSocket-Key.

    Ví dụ

    Input:
    GET /chat HTTP/1.1
    Host: example.com
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
    Sec-WebSocket-Version: 13
    
    Output:
    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
    
    • Định dạng đầu vào:

      Nhiều dòng header HTTP request, trong đó có dòng Sec-WebSocket-Key: <key>.

    • Ràng buộc đầu vào:

      Luôn tồn tại header Sec-WebSocket-Key.

    • Định dạng đầu ra:

      4 dòng phản hồi 101 như mô tả.

    Ví dụ:

    Đầu vào:

    GET /chat HTTP/1.1
    Host: example.com
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
    Sec-WebSocket-Version: 13
    

    Đầu ra:

    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

    Giải thích:

    Lấy key từ header, tính accept, dựng phản hồi 101 chuẩn.

    Đang tải editor...