Web 开发的一些常用基础——HTTP请求与响应、Cookies与Session

【Python Web开发】Session与用户状态 浏览器连续刷新同一页面时,服务器怎样知道该把计数从 1 变为 2,而不是把另一位访客的计数也改掉?HTTP 本身并不会自动记住上一条请求。 阅读详情

HTTP 请求

进入浏览器的开发者模式下的 Network 监听组件,访问百度 https://www.baidu.com/,输入该 URL 后回车,观察这个过程中发生了怎样的网络请求:

0

请求,由客户端向服务端发出,可以分为 4 部分内容:请求方法(Request Method)、请求的网址(Request URL)、请求头(Request Headers)、请求体(Request Body)。

请求方法

常见的请求方法有两种:GET 和 POST。

在浏览器中直接输入 URL 并回车,这便发起了一个 GET 请求,请求的参数会直接包含到 URL 里。例如,在百度中搜索 Python,这就是一个 GET 请求,链接为 https://www.baidu.com/s?wd=Python,其中 URL 中包含了请求的参数信息,这里参数 wd 表示要搜寻的关键字。POST 请求大多在表单提交时发起。比如,对于一个登录表单,输入用户名和密码后,点击 “登录” 按钮,这通常会发起一个 POST 请求,其数据通常以表单的形式传输,而不会体现在 URL 中。

GET 和 POST 请求方法有如下区别:

  • GET 请求中的参数包含在 URL 里面,数据可以在 URL 中看到,而 POST 请求的 URL 不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中。
  • GET 请求提交的数据最多只有 1024 字节,而 POST 请求没有限制。

常见的 HTTP 请求方法如下:
1

请求头

请求头,用来说明服务器要使用的附加信息,比较重要的信息有 Cookie、Referer、User-Agent 等。下面简要说明一些常用的头信息。

  • Accept:请求报头域,用于指定客户端可接受哪些类型的信息。
  • Accept-Language:指定客户端可接受的语言类型。
  • Accept-Encoding:指定客户端可接受的内容编码。
  • Host:用于指定请求资源的主机 IP 和端口号,其内容为请求 URL 的原始服务器或网关的位置。从 HTTP 1.1 版本开始,请求必须包含此内容。
  • Cookie:也常用复数形式 Cookies,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。例如,我们输入用户名和密码成功登录某个网站后,服务器会用会话(Session)保存登录状态信息,后面我们每次刷新或请求该站点的其他页面时,会发现都是登录状态,这就是 Cookies 的功劳。Cookies 里有信息标识了我们所对应的服务器的会话,每次浏览器在请求该站点的页面时,都会在请求头中加上 Cookies 并将其发送给服务器,服务器通过 Cookies 识别出是我们自己,并且查出当前状态是登录状态,所以返回结果就是登录之后才能看到的网页内容。
  • Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计、防盗链处理等。
  • User-Agent:简称 UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,可以伪装为浏览器;如果不加,很可能会被识别出为爬虫。
  • Content-Type:也叫互联网媒体类型(Internet Media Type)或者 MIME 类型,在 HTTP 协议消息头中,它用来表示具体请求中的媒体类型信息。例如,text/html 代表 HTML 格式,image/gif 代表 GIF 图片,application/json 代表 JSON 类型。

因此,请求头是请求的重要组成部分,在写爬虫时,大部分情况下都需要设定请求头。

请求体

请求体一般承载的内容是 POST 请求中的表单数据,而对于 GET 请求,请求体则为空。

2
登录之前,我们填写了用户名和密码信息,提交时这些内容就会以表单数据的形式提交给服务器,此时需要注意 Request Headers 中指定 Content-Type 为 application/x-www-form-urlencoded。只有设置 Content-Type 为 application/x-www-form-urlencoded,才会以表单数据的形式提交。另外,我们也可以将 Content-Type 设置为 application/json 来提交 JSON 数据,或者设置为 multipart/form-data 来上传文件。

表格中列出了 Content-Type 和 POST 提交数据方式的关系:

3
在爬虫中,如果要构造 POST 请求,需要使用正确的 Content-Type,并了解各种请求库的各个参数设置时使用的是哪种 Content-Type,不然可能会导致 POST 提交后无法正常响应。

HTTP 响应

响应,由服务端返回给客户端,可以分为三部分:响应状态码(Response Status Code)、响应头(Response Headers)和响应体(Response Body)。

响应状态码

响应状态码表示服务器的响应状态,如 200 代表服务器正常响应,404 代表页面未找到,500 代表服务器内部发生错误。

状态码说明详情
200响应成功服务器已经成功处理了请求
301永久重定向服务器通过回传状态码 301 来下达给客户端,让客户端完成跳转
302临时重定向请求的网页暂时跳转到其他页面
403禁止访问没有权限去访问服务器的资源,或者请求的 IP 地址被封掉了
404未找到服务器找不到客户端请求的资源
500服务器内部错误服务器端的网页程序出错

响应头

响应头包含了服务器对请求的应答信息,如 Content-Type、Server、Set-Cookie 等。下面简要说明一些常用的响应头信息:

  • Date:标识响应产生的时间。
  • Last-Modified:指定资源的最后修改时间。
  • Content-Encoding:指定响应内容的编码。
  • Server:包含服务器的信息,比如名称、版本号等。
  • Content-Type:文档类型,指定返回的数据类型是什么,如 text/html 代表返回 HTML 文档,application/x-javascript 则代表返回 JavaScript 文件,image/jpeg 则代表返回图片。
  • Set-Cookie:设置 Cookies。响应头中的 Set-Cookie 告诉浏览器需要将此内容放在 Cookies 中,下次请求携带 Cookies 请求。
  • Expires:指定响应的过期时间,可以使代理服务器或浏览器将加载的内容更新到缓存中。如果再次访问时,就可以直接从缓存中加载,降低服务器负载,缩短加载时间。

Cookies 与 Session

在了解 Session 和 Cookies 之前,我们还需要了解 HTTP 的一个特点,叫作无状态。

HTTP 的无状态是指 HTTP 协议对事务处理是没有记忆能力的,也就是说服务器不知道客户端是什么状态。

这时两个用于保持 HTTP 连接状态的技术就出现了,它们分别是 Session 和 Cookies。Session 在服务端,也就是网站的服务器,用来保存用户的 Session 信息;Cookies 在客户端,也可以理解为浏览器端,有了 Cookies,浏览器在下次访问网页时会自动附带上它发送给服务器,服务器通过识别 Cookies 并鉴定出是哪个用户,然后再判断用户是否是登录状态,进而返回对应的响应。

Session

而在 Web 中,Session(会话)对象用来存储特定用户 Session 所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户 Session 中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有 Session,则 Web 服务器将自动创建一个 Session 对象。当 Session 过期或被放弃后,服务器将终止该 Session。

Cookies

Cookies 指某些网站为了辨别用户身份、进行 Session 跟踪而存储在用户客户端上的数据。

Session 维持

那么,我们怎样利用 Cookies 保持状态呢?当客户端第一次请求服务器时,服务器会返回一个响应头中带有 Set-Cookie 字段的响应给客户端,用来标记是哪一个用户,客户端浏览器会把 Cookies 保存起来。当浏览器下一次再请求该网站时,浏览器会把此 Cookies 放到请求头一起提交给服务器,Cookies 携带了 Session ID 信息,服务器检查该 Cookies 即可找到对应的 Session 是什么,然后再判断 Session 来以此来辨认用户状态。

所以,Cookies 和 Session 需要配合,一个处于客户端,一个处于服务端,二者共同协作,就实现了登录 Session 控制。

属性结构

以知乎为例,在浏览器开发者工具中打开 Application 选项卡,然后在左侧会有一个 Storage 部分,最后一项即为 Cookies,将其点开,如图所示,这些就是 Cookies。

4
可以看到,这里有很多条目,其中每个条目可以称为 Cookie。

会话 Cookie 和持久 Cookie

会话 Cookie 就是把 Cookie 放在浏览器内存里,浏览器在关闭之后该 Cookie 即失效;持久 Cookie 则会保存到客户端的硬盘中,下次还可以继续使用,用于长久保持用户登录状态。

其实严格来说,没有会话 Cookie 和持久 Cookie 之 分,只是由 Cookie 的 Max Age 或 Expires 字段决定了过期的时间。

因此,一些持久化登录的网站其实就是把 Cookie 的有效时间和 Session 有效期设置得比较长,下次我们再访问页面时仍然携带之前的 Cookie,就可以直接保持登录状态。

常见误区

需要注意的是,Session 和 Cookies 的存在与否,跟用户是否关闭浏览器无关。

由于大部分网站都使用会话 Cookie 来保存 Session ID 信息,而关闭浏览器后 Cookies 就消失了,再次连接服务器时,也就无法找到原来的 Session 了。而关闭浏览器的行为不会被服务器获知。

如果把 Cookies 保存到硬盘上,或者使用某种手段改写浏览器发出的 HTTP 请求头,把原来的 Cookies 发送给服务器,则再次打开浏览器,仍然能够找到原来的 Session ID,依旧还是可以保持登录状态的。

Session 的生存时间由服务器端设置的失效时间决定,当距离客户端上一次使用 Session 的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把 Session 删除以节省存储空间。

液冷方式介绍 如果将直径在1~100nm的颗粒悬置在传热流体(例如:水、乙烯、乙二醇等)中时,其传热能力会得到提升,因为大多数固体材料的热导率要大于液体,因此由颗粒、流体组成的混合物热导率也高于液体本身的热导率,由此制成的流体,我们称之为纳米流体。金属冷管的液体工质蒸散量几乎为0,而柔软材质的管道则会产生液体的蒸散,在封闭式循环系统中,为了弥补液体工质的蒸散,必须定期在系统中补充液体工质。——我们之前说过,材料的导电和导热的机制大致是类似的,所以导电能力更强的金属往往具有更好的导热能力。 阅读详情

相关推荐

苏州大学自动化考研842自动控制原理:手把手教你用胡寿松《自控》高效备考(附复试电工/电子/微机原理攻略)

本文详细解析苏州大学自动化考研842自动控制原理备考策略,以胡寿松《自动控制原理》为核心教材,提供三阶段高效学习路径和实战技巧。重点涵盖频域分析、根轨迹绘制等高频考点,并针对机电、光电、轨道三个学院的复试科目(电工电子技术、电子技术基础、微机原理与接口技术)给出差异化备考方案,助力考生全面提升笔试和面试表现。

weixin_42638178的博客 399

Cookie和Session区别及原理

会话是由一组请求与响应组成,是围绕着一件相关事情所进行的请求与响应。所以这些请求与响应之间一定是需要有数据传递的,即是需要进行会话状态跟踪的。Cookie 是由服务器生成,保存在客户端的一种信息载体。这个载体中存放着用户访问该站点的会话状态信息。用户在提交第一次请求后,由服务器生成 Cookie,并将其封装到响应头中,以响应的形式发送给客户端。客户端接收到这个响应后,将 Cookie 保存到客户端。当客户端再次发送同类请求后。

从基础到源码解析的学习记录 2768

abaqus wcm插件下载_Abaqus随机短纤维增强复合材料建模插件

文末附Abaqus随机短纤维增强复合材料建模插件下载链接前言短纤维增强复合材料相对于长纤维增强复合材料来说更容易制备,且短纤维的填充性能略有改善,可制造复杂产品,广泛应用于车辆、航空航天、建筑等行业,对短纤维增强复合材料进行细观力学分析,可对其宏观力学性能进行预测、分析破坏机理等。接下来对随机短纤维增强复合材料建模插件进行介绍。NO.1 【算法简介】难点一:此插件核心在于判断生成的纤维是...

weixin_39974882的博客 2833

什么是Cookies?请求Cookies和响应 Cookies的关系

cookies是在 HTTP 请求中用于在客户端(通常是浏览器)和服务器之间传递信息的小型数据片段。请求 Cookies 和响应 Cookies 是 HTTP 通信中 Cookies 的两个方向:请求 Cookies 由客户端发送给服务器,响应 Cookies 由服务器发送给客户端。它们相互配合,共同实现了在客户端和服务器之间维护状态和传递信息的功能。

TradingAgents-CN专栏 3897

2026 年第十六届MathorCup数学应用挑战赛题目C题中老年人群高血脂症的风险预警及干预方案优化 2026妈妈杯 详细思路、代码、模型

2026 年第十六届MathorCup数学应用挑战赛题目 C题中老年人群高血脂症的风险预警及干预方案优化 人口老龄化进程的持续加快,使得40岁及以上中老年人群成为 慢性病防控的核心群体,其中高血脂症的发病率呈逐年攀升态势, 已成为诱发冠心病、脑梗死等心脑血管疾病的重要危险因素,严重 威胁中老年群体的心血管健康与生活质量,也加重了基层医疗的慢 病管理负担。从中医体质学视角来看,体质禀赋与偏颇是疾病发生 发展的内在根基,其中痰湿体质为中老年高血脂症的高发体质类型, 该体质人群存在痰湿内蕴、脾胃运化失常、水湿代谢

YOLO 754

高电压技术的面试内容整理(详细版本:57题)

涵盖了高电压技术的关键领域,包括气体放电的物理过程、液体和固体介质的绝缘特性、高压外绝缘的分类与特性、电气设备绝缘试验的方法与原理、电力系统的防雷保护措施,以及内部过电压的产生、影响与限制方法,为理解和应对高电压环境下的电气问题提供了系统的知识框架。通过深入探讨气体放电理论、介质极化与损耗、绝缘子的电气特性、绝缘试验技术、防雷策略以及内部过电压的管理。

weixin_44808274的博客 775

前后端分离跨域与cookie

那么,现在再来看下,一个新的问题,刚刚说到cookie在前后端不分离的情况下,cookie默认就是刚刚说的这样玩的,但是如果和跨域问题一起出现的话,又会怎样呢?浏览器它还会携带cookie吗?那么现在就说到这个cookie的问题,它的本质就是一个请求头(Cookie)和响应头(Set-Cookie),只不过这个头会被默认携带给后台。跨域的配置可以看下这个类,里面的解释很清楚,处理逻辑,可以参考DefaultCorsProcessor这个类。

pscool的博客 3204

手把手教你学 Simulink (1.3):探索Simulink模块库的奇妙世界

Simulink模块库按照功能分为多个类别,每个类别包含专门用于特定任务的模块。% 打开Simulink库浏览器% 或者以编程方式获取库列表disp('可用的库列表:');end常用模块(Simulink):最基础和最常用的模块信号处理模块(DSP System Toolbox):专业信号处理工具通信模块(Communications Toolbox):通信系统设计控制系统模块(Control System Toolbox):控制系统设计与分析% 创建自定义模块库。

QQ_778132974的博客 382

计算机网络之网页查看HTTP请求、响应信息

计算机网络之网页查看HTTP请求、响应信息

weixin_52690231的博客 4616

数字盲水印嵌入和提取的实现基于小波变换DWT算法

数字盲水印是指在不知道原始图像的情况下,在其上嵌入水印并在后续的提取过程中能够恢复出原始水印的一种技术。本文介绍的数字盲水印嵌入和提取的实现方法基于小波变换DWT算法。具体来讲,DWT将信号或图像进行二次下采样和卷积滤波,使得高频分量的图像信息被集中在一个小区域内,方便进行嵌入和提取操作。其中 a 表示嵌入强度,而 watermark 则是用于嵌入的水印图像,这里我们嵌入的是一个全灰的图像。通过以上的代码,我们可以实现数字盲水印的嵌入和提取,并在一定程度上保护数字图片的版权安全。

HackWhisper的博客 511

2026年软考信息安全工程师备考指南

信息安全工程师是信息产业部和人事部举办的软考中新增开的一门考试。软考全称全国计算机技术与软件专业技术资格(水平)考试,这门新开的信息安全工程师分属该考试“信息系统”专业,位处中级资格,是信息产业部和人事部在最新的“国人厅发[2007]139号文件中新增的专业。2016年下半年,第一次开考信息安全工程师(中级)考试。 考试科目: 1.信息安全基础知识,考试时间为150分钟,笔试,选择题; ...

鹿鸣天涯 7395

HTTP中的Cookie、Set-Cookie

HTTP中的Cookie、Set-Cookie

XHT117的博客 5096

深入解析 Multi-Agent 协同决策机制与架构设计

让我们从一些基础定义开始,为后续的讨论建立共同的语言。在计算机科学和人工智能领域,智能体(Agent)是指一个能够感知环境、做出决策并执行动作的实体。智能体是任何可以通过传感器感知环境,并通过执行器作用于该环境的事物。atπstat​πst​sts_tst​是时刻ttt的环境状态(或智能体的观测)π\piπ是智能体的策略(Policy),即从状态到动作的映射ata_tat​是智能体在时刻ttt选择执行的动作多智能体系统(MAS)

AI天才研究院 540

Cookies,Session,Token

Cookies适合简单的状态管理,但安全性较低。Session适合需要存储大量用户状态信息的场景,但服务器压力较大。Token适合现代的Web应用和API接口,尤其是分布式系统,具有高安全性和可扩展性。在实际开发中,可以根据具体需求选择合适的机制,也可以将它们组合使用以达到最佳效果。

jkl12345669的博客 747

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Java EE】Spring Web MVC 请求与响应的全过程

Spring MVC是Java Web开发的核心框架,基于MVC设计模式实现前后端交互。它将应用分为Model(业务逻辑)、View(数据展示)和Controller(请求调度)。Spring Boot作为开发脚手架,通过集成Spring MVC(spring-web依赖)提供Web能力。核心流程包括:1) 建立连接:使用@RequestMapping绑定URL与方法;2) 获取参数:支持普通参数、对象、数组、集合及@RequestParam重命名;3) 返回响应。适用于前后端分离场景,后端主要

记录了从0学习Java技术栈的日常 806

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

HTTP Cookies在Python中管理会话状态

在Web开发中,HTTP Cookies是一种用于在客户端(通常是浏览器)和服务器之间保持会话状态的小型文本文件。Cookies允许服务器在客户端存储一些信息,并在后续的请求中检索这些信息,从而识别用户或维护用户的状态。服务器在响应中设置的Cookies会被保存在会话对象中,并在后续的请求中自动发送回去。例如,你可能想从一个响应中提取Cookies,并在另一个会话中使用它们。库提供了强大的工具来自动处理Cookies,使得与需要会话管理的Web服务交互变得简单而直观。中,Cookies是通过。

weixin_73725158的博客 350

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

4:Session与Cookies

第4讲:Session与Cookies 文章目录第4讲:Session与Cookies4.1 静态网页和动态网页4.2 无状态HTTP4.3 原理4.4 属性结构 崔庆才《52轻松搞定网络爬虫》第4讲,版权归拉勾网所有。 4.1 静态网页和动态网页 ​ 最基本的HTML代码,我们将其保存为一个.html文件,然后把它放在某台具有固定公网IP的主机上,主机上装上Apache或Nginx等服务器,这...

菜鸡养成手册 234

Cookies 与 Session 核心知识点

Cookies 负责在客户端存储 “钥匙”(SessionID),Session 负责在服务器端存储 “用户数据”。实际开发中,需根据数据敏感性、大小和场景选择合适的存储方式,同时重视安全配置(如HttpOnlysecureSameSite等),避免出现身份伪造、数据泄露等风险。

asad6的博客 749

Flask 请求响应 session

请求响应 flask的请求信息都在request里 flask的响应方式有四剑客,也可以自定义响应 请求相关信息 from flask import Flask, request request.method 提交的方法 request.args get请求提及的数据 类似字典类型 request.form post请求提交的数据 类似字典类型 request.values...

Waller_的博客 431

python session cookies_零基础学 Python爬虫(10):Session 和 Cookies

静态网页静态网页就是我们上一篇写的那种 html 页面,后缀为 .html 的这种文件,直接部署到或者是放到某个 web 容器上,就可以在浏览器通过链接直接访问到了,常用的 web 容器有 Nginx 、 Apache 、 Tomcat 、Weblogic 、 Jboss 、 Resin 等等,很多很多。如果说要举例子的话那么小编的个人博客站:https://www.geekdigging.com...

weixin_39764212的博客 120

web之Cookies

这里写自定义目录标题1 什么是cookie2 cookie的作用3 cookie的属性项4 cookie如何工作的4.1 如何使用cookie4.1 cookie失效时间控制4.2 后端服务器如何将Cookie添加到HTTP的Header中的呢4.3 浏览器如何将Cookie添加到HTTP的Header中的呢4.4 使用Cookie的限制 1 什么是cookie cookie是由后端服务器端创建保...

李白的博客 4417

android http请求实现session管理

session一般保存在Cookie当中,首先我们了解一下session和cookie的

shelomi的专栏 4161

Flask框架之Request、Response、Cookies、Session等对象的使用

在Flask中,Request对象是一个封装了HTTP请求信息的类,它提供了访问HTTP请求的各种属性和方法。Response对象是用于构建 HTTP 响应的类。

积跬步,至千里。 1504

python flask基础总结 HTTP

flask 是pythonweb框架之一 相比于django之类的重型框架 已经为你配置好很多内容 flask可以作为微型框架 微不代表他小 而是代表他的内容可以被你自己定义 响应和请求 我们在布置web服务器后 用户访问一个url 浏览器便会生成相对应的HTTP请求 由互联网发送到web服务器 服务器接收请求 flask根据请求的url执行对应的视图函数 视图函数运行并返回相对应的结果 包含h...

weixin_43690442的博客 774

Scrapy Cookies 完全指南:CookiesMiddleware 的请求/响应处理、cookiejar 多会话与 dont_merge_cookies 机制

本文以 Scrapy 官方文档 [docs/topics/cookies.rst](https://link.gitcode.com/i/fdce63cb2c0d6e8c67484b2e28b845e2) 为核心骨架,系统讲解 Scrapy 如何像浏览器一样自动跟踪并回传网站设置的 Cookie:如何在单个请求上手动指定 Cookie、如何用 `cookiejar` 元键为同一 Spider 维护

gitblog_00521的博客 244

浅析http协议、cookies和session机制、浏览器缓存

最近几天在复习http协议中headers,cookies、session、缓存等相关知识,发现些新知识点。 这篇文章注重结合PHP去理解这些内容,也就是比较注重实践部分。 http headers           NO1:对于web应用,用户群在客户端 (各种浏览器)点击任何一个连接向服务器发送http请求,这过程肯定需要3次握手,建立连接,服务器响应返回数据。

haozi3156666的专栏 503
上一篇: CSS 实现居中的五种方法,以及十种现代布局
下一篇: Django 数据库表模型与迁移
Skr.B
博客等级 码龄8年 1103粉丝 81原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Skr.B

WUHOOO~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值