响应头
每个 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 对象副本,不包含指定的响应头。