polymorphine/headers

HTTP 响应头中间件

0.1.2 2022-10-05 01:38 UTC

This package is auto-updated.

Last update: 2024-09-05 05:56:38 UTC


README

Latest stable release Build status Coverage status PHP version LICENSE

HTTP 响应头中间件

使用 Composer 安装

composer require polymorphine/headers

基本用法

设置-Cookie 响应头
  1. 使用 ResponseHeaders 上下文实例化 cookie 构建器
    $headers     = new ResponseHeaders();
    $cookieSetup = new CookieSetup($headers);
    或者,可以使用 ResponseHeaders 方法实例化 CookieSetup
    $cookieSetup = $context->cookieSetup();
  2. 使用其指令/属性的数组配置 cookie(见 CookieSetup::directives() 方法)
    $cookieSetup->directives([
        'Domain'   => 'example.com',
        'Path'     => '/admin',
        'Expires'  => new DateTime(...),
        'MaxAge'   => 1234,
        'Secure'   => true,
        'HttpOnly' => true,
        'SameSite' => 'Strict'
    ]);
    也可以使用其构建器方法修改设置对象
    $cookieSetup->domain('example.com')
                ->path('/admin')
                ->expires(new DateTime(...))
                ->maxAge(1234)
                ->secure()
                ->httpOnly()
                ->sameSite('Strict');
  3. 使用其名称实例化 Cookie 类型对象
    $cookie = $cookieSetup->cookie('MyCookie');
  4. 发送值
    $cookie->send('value');
    或者撤销 cookie,以便它不会被未来的请求发送
    $cookie->revoke();
    每个 cookie 只能发送/撤销一次头信息
指令和属性

指令根据 RFC6265 中关于 Set-Cookie 响应头属性的章节使用(除了相对较新的 SameSite 指令)。它们的描述也可能在 Mozilla 开发者网络 找到。在 CookieSetup 类的 mutator 方法文档块中解释了具有附加类逻辑的简洁描述。

以下是一些针对设置这些指令的类特定规则

  • 空值和根路径(/)可以省略,因为它们与默认值相同。
  • SameSite 允许的值是 StrictLax,但任何非空值都将设置 Lax
  • ExpiresMaxAge 是设置相同 cookie 过期日期的不同方式。如果两个指令都传递给构造函数或 directivesArray() 方法,则由于覆盖,将使用最后一个值。
具有预定义指令的 Cookie

CookieSetup 有两种创建 Cookie 实例的替代方法: CookieSetup::permanentCookie()CookieSetup::sessionCookie()

  • 永久 构造函数设置长(5 年)的过期值(ExpiresMaxAge
  • 会话 构造函数设置安全指令(HttpOnlySameSite=Lax