0

我有以下要求:

2017-04-05 06:53:31 Error: Cake\Http\ServerRequest Object
(
    ...
    [_environment:protected] => Array
        (
            [HTTP_REGISTRATION] => eur73_9lhfQ:...SJMryPxCNzKcqSufdpFMOaux
            ...
        )

    [_detectorCache:protected] => Array
        (
            [ajax] => 
            [get] => 1
            [head] => 
            [options] => 
            [post] => 
        )

    [uri:protected] => Zend\Diactoros\Uri Object
        (
            [allowedSchemes:protected] => Array
                (
                    [http] => 80
                    [https] => 443
                )
            ...

        )
    ...
)

$this->request->header['registration']返回:

eur73_9lhfQ:...SJMryPxCNzKcqSufdpFMOaux

作为字符串

$this->request->getHeader('registration') 返回:

[Registration] => Array
    (
        [0] => eur73_9lhfQ:...SJMryPxCNzKcqSufdpFMOaux
    )

为什么它返回一个数组?

4

1 回答 1

1

HTTP 标准允许存在具有相同字段名称的多个标头,以防该标头的所有值都可以表示为单个逗号分隔的字符串(Set-Cookie该规则的一个例外,它不能在单个字符串中表示多个值,但是实际上仍然会出现多次以定义多个 cookie)。

为了以方便的方式支持这一点,PSR-7 标准(\Cake\Http\ServerRequest符合)定义了getHeader()将标头值作为数组返回的方法。对此的补充是getHeaderLine()方法,该方法将多个值作为单个逗号分隔的字符串返回。

也可以看看

于 2017-04-05T13:50:46.170 回答