Khi bạn muốn duyệt URL từ trình duyệt của mình, bạn nhập URL. Trình duyệt đặt url bên trong một yêu cầu HTTP như thế này:
GET /path/to/resource.php?var=data1&othervar=data2 HTTP/1.1
Host: example.com
Connection: keep-alive
"empty line"
Sau đó, một máy chủ web cung cấp cho bạn một câu trả lời như thế này:
HTTP/1.0 200 OK
Date: Fri, 02 Sep 2011 14:37:36 GMT
Server: Apache
Cache-Control: private, s-maxage=0, max-age=0, must-revalidate
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 149
Content-Type: text/javascript; charset=utf-8
Connection: keep-alive
"empty line"
"149 bytes of Response data"
Mỗi dòng như thế này "Header-Name: header_value \ r \ n "là một tiêu đề.
Chức năng tiêu đề PHP thêm tiêu đề cho phản hồi trước khi gửi cho trình duyệt của người dùng.
Trong ví dụ của bạn tiêu đề là:
Location: http://google.com
Và nó được thêm vào ngay sau tiêu đề cuối cùng trước khi "dòng trống" (mà là một dòng mà chỉ chứa một \ r \ n).
yêu cầu POST là khác nhau từ các yêu cầu GET vì bạn có một cơ thể yêu cầu sau khi "dòng trống"):
POST /path/to/resource.php HTTP/1.1
Host: example.com
Connection: keep-alive
Content-Length: "number of bytes in the body"
"empty line"
variable=data&othervar=data2
Tóm lại một yêu cầu HTTP được thực hiện như thế này:
- Yêu cầu/hàng phản hồi (POST hoặc GET theo sau là url và phiên bản http cho yêu cầu, phiên bản Http theo sau là mã phản hồi và chuỗi phản hồi cho phản hồi) đã kết thúc với \ r \ n
- tiêu đề yêu cầu/phản hồi (tiêu đề-name: header_value \ r \ n)
- trống hàng (\ r \ n)
- đáp ứng/yêu cầu cơ thể
PS. Hàng được ALWAYS đóng bởi "\ r \ n" byte ("dòng trống" được tạo thành chỉ bằng hai byte đó).
Bạn đang nhầm lẫn với yêu cầu HTTP và phản hồi HTTP. Chức năng tiêu đề PHP thêm tiêu đề mới vào tiêu đề RESPONSE, GET và POST là các phương thức REQUEST. – CaNNaDaRk
Ah ... Điều này có ý nghĩa. –
Trong câu trả lời của tôi, bạn có một ví dụ về một YÊU CẦU và một RESPONSE và bạn được giải thích tiêu đề là như thế nào. – CaNNaDaRk