当前位置:首页 > 行业动态 > 正文

http请求服务器及回应请求

客户端发请求至服务器, 服务器解析后处理并生成响应,含状态码、头信息及数据,返回给客户端完成交互

HTTP请求服务器及回应请求详解

HTTP请求的基本流程

  1. 客户端发起请求

    • 用户通过浏览器或客户端向服务器发送HTTP请求。
    • 请求包含:请求行(方法、URL、协议)、请求头(Headers)、请求体(Body,部分方法需要)。
    • GET /index.html HTTP/1.1
  2. DNS解析与TCP连接

    • 客户端通过DNS将域名解析为服务器IP地址。
    • 与服务器建立TCP连接(三次握手),默认端口为80(HTTP)或443(HTTPS)。
  3. 服务器处理请求

    http请求服务器及回应请求  第1张

    • 服务器接收请求,解析URL、头信息和请求体。
    • 根据资源路径定位文件或调用后端逻辑处理请求。
  4. 服务器返回响应

    • 服务器生成HTTP响应,包含状态行、响应头、响应体。
    • 通过TCP连接将响应发送给客户端。
  5. 连接关闭或持久化

    • HTTP/1.0默认关闭连接,HTTP/1.1支持持久连接(Connection: keep-alive)。

HTTP请求方法

方法 用途 是否安全 是否允许请求体
GET 获取资源
POST 提交数据(如表单)
PUT 更新资源(如文件覆盖)
DELETE 删除资源
HEAD 获取资源头信息(不返回body)
OPTIONS 查询支持的HTTP方法

示例

  • GET /users?id=123:获取用户ID为123的信息。
  • POST /login:提交用户名和密码登录。

HTTP响应结构

  1. 状态行

    • 格式:HTTP/版本 状态码 原因短语
    • 示例:HTTP/1.1 200 OK
  2. 响应头(Headers)

    • 包含元信息,如内容类型、长度、编码等。
    • 常见头字段:
      • Content-Typetext/html; charset=utf-8(告诉浏览器如何解析内容)。
      • Content-Length1234(响应体的字节长度)。
      • Set-CookiesessionId=abc123(设置Cookie)。
      • Locationhttps://example.com/new-path(重定向地址)。
  3. 响应体(Body)

    实际返回的数据(如HTML、JSON、图片等)。


HTTP状态码分类

类别 状态码范围 示例 含义
1xx 100-199 101 信息响应(继续处理)
2xx 200-299 200, 201 成功(200:OK;201:已创建)
3xx 300-399 301, 302 重定向(301:永久;302:临时)
4xx 400-499 400, 401 客户端错误(404:未找到)
5xx 500-599 500, 502 服务器错误(503:服务不可用)

常见请求头与响应头

头字段 作用 示例
请求头
Host 指定服务器域名/IP Host: example.com
User-Agent 客户端信息(浏览器、版本等) User-Agent: Mozilla/5.0
Content-Type 请求体数据格式(POST/PUT) Content-Type: application/json
响应头
Date 响应生成的时间 Date: Tue, 19 Apr 2023 08:30:00 GMT
Server 服务器类型(可隐藏) Server: nginx/1.18.0
Cache-Control 缓存控制指令 Cache-Control: no-cache

相关问题与解答

问题1:GET和POST请求的区别是什么?

  • GET
    • 用于获取资源,参数通过URL传递(?key=value)。
    • 无请求体,数据暴露在URL中,安全性较低。
    • 浏览器和服务器会对URL长度有限制(约2048字符)。
  • POST
    • 用于提交数据(如表单),参数在请求体中。
    • 支持长数据(无明确长度限制),安全性较高。
    • 可能修改服务器资源(非幂等操作)。

问题2:状态码301和302有什么区别?

  • 301 Moved Permanently
    • 永久重定向,浏览器会缓存新地址,后续直接访问新URL。
    • 示例:网站域名更换(如example.comwww.example.com)。
  • 302 Found
    • 临时重定向,浏览器不缓存新地址,下次仍请求原URL。
    • 示例:未登录用户访问需认证的页面时重定向
0