Skip to content

响应头

每个 HTTP 响应都有响应头。这些是描述 HTTP 响应的元数据,但在响应的正文中不可见。PSR-7 Response 对象提供了多个方法来检查和操作其响应头。

获取所有的响应头

你可以使用 PSR-7 Response 对象的 getHeaders() 方法将所有的 HTTP 响应头作为关联数组获取。返回的关联数组的键是响应头的名称,值是一个字符串值的数字数组,对应于其相应的响应头名称。

$headers = $response->getHeaders();
foreach ($headers as $name => $values) {
    echo $name . ": " . implode(", ", $values);
}

获取单个响应头

你可以使用 PSR-7 Response 对象的 getHeader($name) 方法获取单个响应头的值(们)。该方法返回给定响应头名称的值数组。请记住,一个单独的 HTTP 响应头可能有多个值!

$headerValueArray = $response->getHeader('Vary');

你还可以使用 PSR-7 Response 对象的 getHeaderLine($name) 方法获取给定响应头的所有值的逗号分隔字符串。与 getHeader($name) 方法不同,该方法返回一个逗号分隔的字符串。

$headerValueString = $response->getHeaderLine('Vary');

检测响应头

你可以使用 PSR-7 Response 对象的 hasHeader($name) 方法检查某个响应头是否存在。

if ($response->hasHeader('Vary')) {
    // Do something
}

设置响应头

你可以使用 PSR-7 Response 对象的 withHeader($name, $value) 方法设置响应头的值。

$newResponse = $oldResponse->withHeader('Content-type', 'application/json');

Info

Response 对象是不可变的。该方法返回一个新的 Response 对象副本,其中包含新的响应头值。这个方法是破坏性的,并且会替换掉已与相同响应头名称关联的现有响应头值。

追加响应头

你可以使用 PSR-7 Response 对象的 withAddedHeader($name, $value) 方法追加响应头的值。

$newResponse = $oldResponse->withAddedHeader('Allow', 'PUT');

Info

withHeader() 方法不同,此方法将新值追加到已存在的与相同响应头名称关联的值集合中。Response 对象是不可变的。该方法返回一个新的 Response 对象副本,其中包含追加的响应头值。

移除响应头

你可以使用 Response 对象的 withoutHeader($name) 方法移除响应头。

$newResponse = $oldResponse->withoutHeader('Allow');

Info

Response 对象是不可变的。该方法返回一个新的 Response 对象副本,不包含指定的响应头。