Web之http学习笔记

web,http · 浏览次数 : 2

小编点评

HTTP请求与响应是Web应用中非常重要的概念。HTTP请求是指客户端向服务器发出的请求,包括请求行、请求方法、请求头和请求正文;而HTTP响应则是服务器对客户端请求的回复,包括响应行、状态码、状态消息和响应头以及响应正文。 Cookie是Web开发中常用的一种技术,主要用于会话管理和个性化服务。它是由服务器发送到客户端的一个小型数据块,包含了用户的身份信息和一些自定义数据。Cookie有较长的生命周期,可以在浏览器关闭后仍然保持,除非用户手动清除。 在PHP中,可以通过session_set_function()函数来设置session的传输方式。如果cookie被禁用,那么可以使用url重写来实现session的传输。 总的来说,HTTP请求与响应是Web应用的核心机制,而Cookie和session则是实现用户会话管理和个性化服务的重要手段。

正文

HTTP

http文本传输协议(HyperText Transfer Protocol) ,遵循请求/响应(request/response)模型

url

标准格式:协议://服务器域名[:端口]/路径/[?查询]

  • 协议

    http or https

  • 服务器域名

    也可以是ip

  • 端口

    并非必须,若省略则是默认80端口

  • 路径

    目录or文件地址

  • 查询

    从?开始,提供参数名和参数值

http请求

请求行

请求方法 描述
GET 请求页面信息
HEAD 返回响应行和响应头,无响应正文
POST 向指定数据提交数据,可能导致新的资源建立和已有资源的修改
PUT 传送数据,进行存储和替换
DELETE 请求删除页面
CONNECT 将连接改为管道方式的代理服务器
OPTIONS 查看服务器性能
TRACE 回显服务器请求,用于测试和诊断

请求方法 请求路径 协议版本

请求方法

请求头

包含许多有关客户端环境和请求正文的有用信息

Name Content
Host 服务器域名 or ip
Cookie 用户信息
User-Agent 浏览器信息
Accept 可接受的内容类型
Accept-Language 优先选择的语言
..

请求正文

负载

http响应

响应行

协议 状态码 状态消息 eg:HTTP/1.1 200 OK

状态码

分类 分类描述
1XX 信息,服务器收到请求,需要继续执行操作
2XX success
3XX 重定向,需要进一步操作完成请求
4XX 客户端错误
5XX 服务器错误

具体看

[RFC(英文)]

MDN(中文)

  • 200 成功:文件存在。

  • 404 未找到:服务器中不存在该文件。

  • 301 永久移动:请求的网页已永久移动到新位置,这是重定向到给定的URL。

  • 302 临时移动:服务器目前从不同位置的网页响应请求。

  • 303 查看其他位置:请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码。

  • 401 未授权:访问此文件需要身份验证,对于需要登录的网页,服务器可能返回此响应。

  • 403 禁止:请求有效但服务器拒绝响应。

  • 429禁止:Too Many Requests超过了频次限制

  • 500 服务器内部错误:服务器遇到错误,无法完成请求。

响应头

不能放在响应行中的附加响应信息相关服务器的信息对Request-URI所标识的资源进行下一步访问的信息

响应正文

Cookie

定义:

Cookie是由Web服务器发送到客户端(通常是用户的Web浏览器)的一小段数据。这个数据以键值对的形式存储,并且每次客户端发起HTTP请求时,浏览器会自动附带已存储的、与该特定网站相关的Cookie信息发送给服务器。

内容:

Cookie的内容可以包含各种类型的数据,例如用户ID、访问过的网页、购物车信息、用户设置等。由于安全性和隐私保护的原因,Cookie的大小有限制,且对于敏感信息通常需要加密处理。

用途:

  • 会话管理:Cookie最常见的是用来维持用户的会话状态,比如在用户登录后,服务器通过设置一个包含用户ID的Cookie来记住这个用户已经登录,下次用户访问网站时,浏览器会自动带上这个Cookie,服务器就能识别出这是同一个用户,从而保持其登录状态。
  • 个性化服务:Cookie可以记录用户的偏好设置,如语言选择、主题风格等,以便下次访问时直接提供个性化的服务。
  • 追踪行为:一些网站利用Cookie收集用户在网站上的浏览历史、点击行为等数据,用于分析用户行为、优化网站功能或推送相关广告。

生命周期:

Cookie有有效期,分为会话级别的Cookie(浏览器关闭即失效)和持久化Cookie(设置了过期时间,即使关闭浏览器也会在硬盘上保留,直到过期或被手动删除)。

隐私和安全性:

由于Cookie可能涉及到用户隐私信息,因此现代浏览器都提供了控制Cookie的选项,用户可以选择接受所有Cookie、拒绝所有Cookie,或仅接受来自信任站点的Cookie。同时,开发者在设计和使用Cookie时也需要遵循相关的隐私政策和法律法规,确保用户数据的安全。

Session

实现原理

组成:

  • session id 用户的唯一标识,随机生成

研究随机

  • session file 存储session,文件名称:sess_Session_id

格式:sess_d3eom13a9r9pnfssaklnv

  • Session data 保存序列化后的用户数据

PHP中的Session设置函数

session传输

  1. 通过cookie直接传输

  2. 当cookie被禁用时,通过url重写实现传输session

    eg:http://www.ctf-wiki.com/test;sessionid=XXXXXXXX

  3. 表单隐藏字段

    • 不是很懂

与Web之http学习笔记相似的内容:

Web之http学习笔记

目录HTTPurlhttp请求请求行请求方法请求头请求正文http响应响应行状态码响应头响应正文Cookie定义:内容:用途:生命周期:隐私和安全性:Session实现原理组成:PHP中的Session设置函数session传输 HTTP http文本传输协议(HyperText Transfer

Cesium之Web Workers

本文描述浏览器中的Web Workers并基于Cesium源码进行举例

支持JDK19虚拟线程的web框架,之五(终篇):兴风作浪的ThreadLocal

ThreadLocal,这个多线程场景中重要的特性,在虚拟线程领域兴风作浪,为了应付它,quarkus也是够拼,今天咱们就来聊聊这个话题,在轻松的气氛中结束《支持JDK19虚拟线程的web框架》系列

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

quarkus是如何支持虚拟线程的呢?今天咱们一起来阅读quarkus源码,学习从框架开发视角去添加新特性,除了开阔眼界,也为为自己的设计能力提升增加有效的参考信息

支持JDK19虚拟线程的web框架,之五(终篇):兴风作浪的ThreadLocal

ThreadLocal,这个多线程场景中重要的特性,在虚拟线程领域兴风作浪,为了应付它,quarkus也是够拼,今天咱们就来聊聊这个话题,在轻松的气氛中结束《支持JDK19虚拟线程的web框架》系列

支持JDK19虚拟线程的web框架,之四:看源码,了解quarkus如何支持虚拟线程

quarkus是如何支持虚拟线程的呢?今天咱们一起来阅读quarkus源码,学习从框架开发视角去添加新特性,除了开阔眼界,也为为自己的设计能力提升增加有效的参考信息

前端自动化测试之葵花宝典

Web 前端自动化测试是一种可以提高测试效率、减少测试成本和提高测试质量的方法,适用于各种类型的 Web 应用程序。本文谈谈前端自动化测试从入门到精通再到专家级的方案与思维!

详解Web应用安全系列(2)注入漏洞之XSS攻击

上一篇介绍了SQL注入漏洞,今天我们来介绍另一个注入漏洞,即XSS跨站脚本攻击。XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web应用中常见的漏洞。指攻击者在网页中嵌入客户端脚本(一般是JavaScript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到

详解Web应用安全系列(1)注入漏洞之SQL注入

注入漏洞通常是指在可输入参数的地方,通过构造恶意代码,进而威胁应用安全和数据库安全。常见的注入漏洞包括:SQL注入和XSS跨站脚本攻击。 这篇文章我们主要讲SQL注入,SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加

flutter系列之:在flutter中使用流式布局

简介 我们在开发web应用的时候,有时候为了适应浏览器大小的调整,需要动态对页面的组件进行位置的调整。这时候就会用到flow layout,也就是流式布局。 同样的,在flutter中也有流式布局,这个流式布局的名字叫做Flow。事实上,在flutter中,Flow通常是和FlowDelegate一