HTTP请求与HTTP响应介绍及其字段

news2025/6/5 3:02:34

HTTP请求

  • 请求行:请求行主要包含请求方法、请求URI(统一资源标识符)和HTTP协议版本。例如:

    GET /index.html HTTP/1.1

  • 请求头(Headers):包含客户端的元数据,为服务器提供了额外信息,以便更好地理解和处理请求,常见字段如下:

    • Host:指定目标主机名和端口号。
    • User-Agent:描述客户端信息,如操作系统、浏览器版本等。
    • Accept:指定客户端能够处理的内容类型,如text/htmlapplication/json等。
    • Accept-Encoding:客户端支持的内容压缩方式,如gzip、deflate等。
    • Accept-Language:指示客户端优先接受的自然语言列表,让服务器返回特定语言或本地化的内容。
    • Authorization:携带认证凭据(例如 Bearer Token)来证明用户身份。
    • Connection:如**keep-alive指示服务器保持连接**;close则指示请求后关闭连接
    • Content-Type:用于POST、PUT等有请求体的方法,指定请求体MIME类型,如application/jsonapplication/x-www-form-urlencoded等。
    • Cookie:将之前服务器下发的 Cookie 信息保存到浏览器中,之后自动随请求发送回服务器,实现会话管理、用户认证。
    • 缓存相关字段:
      • Cache-Control:客户端用来告知服务器或缓存代理它希望如何控制缓存行为(no-cacheno-storemax-age=0)。
      • If-Modified-Since / If-None-Match:客户端用来询问服务器资源是否有更新,如果资源未修改,服务器返回 304 状态码,客户端则使用本地缓存版本。
  • 请求体:可选部分,主要用于携带要发送给服务器的具体数据,例如表单数据、文件上传或JSON数据,常见的格式有:

    • application/x-www-form-urlencoded:简单的文本类型表单数据。

    • multipart/form-data:包含文件上传二进制数据的表单数据。

    • application/jsonJSON格式数据。

  • 响应头:服务端返回给客户端的元数据信息

    • Status Code状态码

    • Content-Type:指示响应体的MIME类型,有text/html; charset=UTF-8application/jsonimage/png 等。

    • Content-Encoding:让浏览器通过指定的压缩方式对响应内容进行解压缩。

    • Set-Cookie:服务器用来指示浏览器存储 Cookie 的标头。附加属性例如 HttpOnlySecureSameSitepath用以加强安全性。

      • HttpOnly:无法通过js语言获取cookie数据
      • Secure:让浏览器只在 HTTPS 通道中携带这个 cookie
      • SameSite:关于跨站请求是否携带cookie,跨站与跨域的区别是跨域子域名可以不同,但跨站子域名必须相同,比如a.example.comb.example.com的子域名不同,但顶级域名和一级域名相同,所以属于跨站而不是跨域
        • none允许任何跨站请求携带cookie
        • lax:只允许**大部分跨站的get请求(导航、跳转)**携带cookie
        • strict不允许任何跨站请求携带cookie,是否使用取决于前后端分离项目中是否需要通过cookie传数据,不需要则设置为strict、否则设置为none + secure
      • path:浏览器中会自动携带该cookie的请求路径
    • Access-Control-Allow-Origin:在跨域请求中,服务器用来指定允许访问资源的来源

    • Access-Control-Allow-Credentials:指明是否允许客户端在跨域请求中携带 Cookie 等凭证信息。

    • Content-Length:指示响应体字节长度

    • Server:显示服务器使用的软件信息,例如 Apache、nginx、IIS等。

    • Date:响应发送的时间。

    • 缓存相关字段:

      • Cache-Control:服务器设置缓存规则,以确定该用户是否将从其本地缓存加载资源(no-cacheno-storemax-age=3600)。

      • Expires:指定客户端缓存过期的时间。

      • Last-Modified:表示资源的最后修改时间,在下一次请求时,客户端可以用 If-Modified-Since 来判断缓存是否有效

      • ETag:资源的唯一标识符,基于内容生成的哈希值。让客户端使用 If-None-Match 与资源当前状态做比较,以判断缓存是否有效。

      • Etag和Last-Modified的区别:

        Last-Modified:标注的最后修改只能精确到秒级,如果某些文件在 1 秒钟以内,被修改多次的话,它将不能准确标注文件的修改时间;又或者如果某些文件会被定期保存,可能内容并没有任何变化,但 Last-Modified 却改变了,导致文件无法有效使用缓存,此时使用Etag解决。

        Etag:Etag在每次请求时,服务端都必须对资源进行哈希计算,这比起简单获取一下修改时间,开销要大了很多。

        Etag 和 Last-Modified 一起使用:服务器会优先验证 Etag,在 Etag 一致的情况下,再去对比 Last-Modified,这是为了防止有一些 HTTP 服务器未将文件修改日期纳入哈希范围内。

HTTP 响应

  • 响应行
    包括HTTP版本、状态码和状态消息,如HTTP/1.1 200 OK
  • 响应头
    如Content-Type、Server、Date、Set-Cookie等,提供响应的附加信息
  • 响应体
    包含实际的请求结果,如HTML页面、JSON数据、图像文件等。
  • 响应码
状态码类型描述
200 OK2xx 成功请求成功,并返回所请求的数据。
201 Created2xx 成功请求成功且服务器创建了新的资源(常用于 POST 请求)。
204 No Content2xx 成功请求成功,但没有返回任何内容,常见于删除或更新操作后。
301 Moved Permanently3xx 重定向资源已被永久移动到新 URL,客户端和搜索引擎将更新访问链接
302 Found3xx 重定向请求的资源临时位于其他 URL,服务器提示继续使用原 URL 访问
304 Not Modified3xx 重定向缓存内容未修改,无须重新传输数据。
400 Bad Request4xx 客户端错误请求格式错误缺少必需参数,服务器无法理解请求。
401 Unauthorized4xx 客户端错误请求未经授权,需要提供有效的身份验证凭证。
403 Forbidden4xx 客户端错误服务器理解请求但拒绝执行,可能由于权限限制
404 Not Found4xx 客户端错误请求的资源不存在,常见于错误链接或资源被删除的场景。
405 Method Not Allowed4xx 客户端错误请求方法不被允许,例如用 GET 访问只允许 POST 的接口。
500 Internal Server Error5xx 服务器错误服务器内部出现错误,无法完成请求。
502 Bad Gateway5xx 服务器错误网关或代理服务器从上游服务器接收到无效响应
503 Service Unavailable5xx 服务器错误服务器当前无法处理请求,可能由于过载或正在维护中。
504 Gateway Timeout5xx 服务器错误作为网关或代理服务器时,未及时从上游服务器获得响应

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2396697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Fullstack 面试复习笔记:操作系统 / 网络 / HTTP / 设计模式梳理

Fullstack 面试复习笔记:操作系统 / 网络 / HTTP / 设计模式梳理 面试周期就是要根据JD调整准备内容(挠头),最近会混合复习针对全栈这块的内容,目前是根据受伤的JD,优先选择一些基础的操作系统、Java、Nod…

中科院报道铁电液晶:从实验室突破到多场景应用展望

2020年的时候,相信很多关注科技前沿的朋友都注意到,中国科学院一篇报道聚焦一项有望改写显示产业格局的新技术 —— 铁电液晶(FeLC)。这项被业内称为 "下一代显示核心材料" 的研究,究竟取得了哪些实质性进展…

智慧政务标准规范介绍:构建高效、协同的政务信息体系

在当今信息化快速发展的时代,智慧政务作为政府数字化转型的重要方向,正逐步改变着政府管理和服务的方式。为了确保智慧政务系统的建设能够有序、高效地进行,国家制定了一系列标准规范,其中GB∕T 21062系列标准《政务信息资源交换体…

手机照片太多了存哪里?

手机相册里塞满了旅行照片、生活碎片,每次清理都舍不得删?NAS——一款超实用的存储方案,让你的回忆安全又有序~ 1️⃣自动备份解放双手 手机 / 电脑 / 相机照片全自动同步到 NAS,再也不用手动传文件 2️⃣远程访问像…

OpenRouter使用指南

OpenRouter 是一个专注于大模型(LLM)API 聚合和路由的服务平台,旨在帮助开发者便捷地访问多种主流大语言模型(如 GPT-4、Claude、Llama 等),并提供统一的接口、成本优化和智能路由功能。以下是它的核心功能…

【优选算法 | 队列 BFS】构建搜索流程的核心思维

算法相关知识点可以通过点击以下链接进行学习一起加油!双指针滑动窗口二分查找前缀和位运算模拟链表哈希表字符串模拟栈模拟(非单调栈)优先级队列 很多人学 BFS 的时候都知道“用队列”,但为什么一定是队列?它到底在整个搜索流程中起了什么作…

设计模式(行为型)-中介者模式

目录 定义 类图结构展示 角色职责详解 模式的优缺点分析 优点 缺点 适用场景 应用实例 与其他模式的结合与拓展 总结 定义 中介者模式的核心思想可以概括为:用一个中介对象来封装一系列的对象交互。这个中介者就像一个通信枢纽,使各对象不需要…

【Java学习笔记】异常

异常(Exception) 一、基本介绍 在 Java 程序中,将运行中发生的不正常情况称为 “异常”,开发过程中的语法错误和运行时发生的异常情况是不一样的。 二、异常的分类 1. Error(错误):Java 虚拟…

MySQL:视图+用户管理+访问+连接池原理

一、视图 视图是一个虚拟表,其内容由查询定义。同真实的表一样(相当于是把查询的内容当成一个临时表来使用),视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。 1.1 为…

neo4j 5.19.0安装、apoc csv导入导出 及相关问题处理

前言 突然有需求需要用apoc 导入 低版本的图谱数据,网上资料又比较少,所以就看官网资料并处理了apoc 导入的一些问题。 相关地址 apoc 官方安装网址 apoc 官方导出csv 教程地址 apoc 官方 导入 csv 地址 docker 安装 执行如下命令启动镜像 doc…

无人机桥梁3D建模的拍摄频率

无人机桥梁3D建模的拍摄频率 无人机桥梁3D建模的拍摄频率(每秒拍摄照片数)需根据建模精度、飞行速度、相机性能等因素综合确定。以下是专业级作业的详细参数分析: 1. 核心计算公式 拍摄频率(fps) \frac{飞行速度&…

ESP32-idf学习(三)esp32C3连接iot

一、前言 上一篇用蓝牙作为通信方式,虽然勉强完成了控制,但结果显然不是那么符合我们的预期,既然用蓝牙还需要研究一段时间,那我们就先整一些现成的,不需要研究的!iot云平台!这里当然也是通过w…

详解鸿蒙仓颉开发语言中的计时器

今天又到了大家喜闻乐见的科普环节,也可以说是踩坑环节,哈哈哈。今天聊一聊仓颉开发语言中的计时器,这部分可老有意思了。 为什么这么说呢,因为关于仓颉的计时器你几乎搜不到任何的文档,也没有相关的代码提示&#xf…

【计算机网络】第3章:传输层—拥塞控制原理

目录 一、PPT 二、总结 (一)拥塞的定义 (二)拥塞产生的原因 (三)拥塞控制的目标 (四)拥塞控制方法分类 1. 端到端拥塞控制 2. 网络辅助拥塞控制 (五)…

Vue3(watch,watchEffect,标签中ref的使用,TS,props,生命周期)

Vue3(watch,watchEffect,标签中ref的使用,TS,props,生命周期) watch监视 情况三:监视reactive定义的对象类型的数据 监视reactive定义的对象类型的数据,默认开启深度监视。地址没变,新值和旧…

【nssctf第三题】[NSSCTF 2022 Spring Recruit]easy C

这是题目&#xff0c;下载附件打开是个C文件 #include <stdio.h> #include <string.h>int main(){char a[]"wwwwwww";char b[]"dvxbQd";//try to find out the flagprintf("please input flag:");scanf(" %s",&a);if…

DBeaver导入/导出数据库时报错解决方案

导出&#xff1a; 报错&#xff1a;mysqldump: Got error: 2026: SSL connection error: error:0A000102:SSL routines::unsupported protocol when trying to connect 在额外的命令参数中添加"--ssl-modeDISABLED"可以关闭SSL服务&#xff0c;从而成功解决问题。这…

uniapp与微信小程序开发平台联调无法打开IDE

经测试属于网络问题。本机需要联网。否则会出现Hbuilder运行微信小程序到模拟器时无法打开 微信开发者工具 这个页面出不来会一直显示异常。这期间微信小程序开发工具的端口是通的 需要先联网

第十二节:第五部分:集合框架:Set集合的特点、底层原理、哈希表、去重复原理

Set系列集合特点 哈希值 HashSet集合的底层原理 HashSet集合去重复 代码 代码一&#xff1a;整体了解一下Set系列集合的特点 package com.itheima.day20_Collection_set;import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.…

【C++项目】:仿 muduo 库 One-Thread-One-Loop 式并发服务器

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;C从入门到精通 目录 &#x1f525; 前言 一&#xff1a;&#x1f525; 项目储备知识 &#x1f98b; HTTP 服务器&#x1f98b; Reactor 模型&#x1f380; 单 Reactor 单线程&#xff1a;单I/O多路…