HTTP请求

HTTP 请求报文的结构:

请求行 (Request Line)
请求头部 (Headers)
空行 (CRLF)
请求数据 (Body)

1. 请求行 (Request Line)

请求行用于指定请求的 方法、目标 URL 及 HTTP 版本

<请求方法> <请求的资源路径> <HTTP版本>

例如:

GET /search?q=chatgpt HTTP/1.1

请求行解析

组件作用
GET请求方法(常见的有 GETPOSTPUTDELETE 等)
/search?q=chatgpt目标资源路径(可能包含查询参数)
HTTP/1.1使用的 HTTP 版本(通常为 HTTP/1.1HTTP/2

2. 请求头部 (Headers)

请求头包含了客户端(浏览器、curl、HTTP 库等)提供的额外信息,例如:

Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: SESSIONID=abc123

常见的请求头

头字段作用
Host目标服务器域名(HTTP 1.1 必须包含)
User-Agent客户端信息(浏览器、爬虫、curl 等)
Accept期望的响应格式,例如 text/htmlapplication/json
Accept-Encoding支持的压缩方式,如 gzipdeflate
Accept-Language语言偏好,例如 zh-CN, en-US
Cookie发送给服务器的 Cookie(保持登录状态等)
Connectionkeep-alive(保持长连接)或 close(关闭连接)

3. 空行 (CRLF)

请求头部结束后,必须有一个 空行(即 \r\n),表示请求头部结束,接下来的内容是请求体。

4. 请求数据 (Body)

  • GET 请求 通常 没有请求体,数据通过 URL 查询参数传递:
  • GET /search?q=chatgpt HTTP/1.1
    

    POST/PUT 请求 可能包含请求体,例如:

  • POST /login HTTP/1.1
    Host: www.example.com
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 29
    
    username=admin&password=12345
    

    这里的 username=admin&password=12345 就是请求数据。

  • 完整 HTTP 请求示例

  • GET /search?q=chatgpt HTTP/1.1
    Host: www.google.com
    User-Agent: Mozilla/5.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Cookie: PREF=ID=abc123
    
    

    注意:最后的 空行 很重要,它表示请求头部结束!

  • 总结

    部分作用
    请求行指定 HTTP 方法、URL 和版本
    请求头部额外的客户端信息,如 User-AgentAcceptCookie
    空行分隔请求头部和请求体
    请求数据POSTPUT 等请求包含,GET 请求通常没有
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值