Web之http学习笔记

目录

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. 表单隐藏字段

    • 不是很懂