我有一个用Symfony 2编写的HTTP API,我正在为它编写一些功能测试。
我注意到当我尝试发送Authorization
标头时,在我记录收到的标头时,控制器中没有收到它。
在测试控制器中:
$client = self::createClient();
$client->insulate();
$headers = array(
'Authorization' => "Bearer {$accessToken}",
'CONTENT_TYPE' => 'application/json',
);
$client->request('DELETE', "/auth", array(), array(), $headers );
在测试控制器中:
print_r( $request->headers );
输出:
Symfony\Component\HttpFoundation\HeaderBag Object
(
[headers:protected] => Array
(
[host] => Array
(
[0] => localhost
)
[user-agent] => Array
(
[0] => Symfony2 BrowserKit
)
[accept] => Array
(
[0] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
)
[accept-language] => Array
(
[0] => en-us,en;q=0.5
)
[accept-charset] => Array
(
[0] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
)
[content-type] => Array
(
[0] => application/json
)
[x-php-ob-level] => Array
(
[0] => 0
)
)
[cacheControl:protected] => Array
(
)
)
如何传递Authorization
标题?
答案 0 :(得分:19)
对于Symfony 2,您似乎需要使用$_SERVER
文档[1]中列出的标题。
从文档中不是很清楚但在我的情况下我必须做以下事情:
$headers = array(
'HTTP_AUTHORIZATION' => "Bearer {$accessToken}",
'CONTENT_TYPE' => 'application/json',
);
$client->request('DELETE', "/auth", array(), array(), $headers );
请注意问题中使用的HTTP_AUTHORIZATION
vs Authorization
标头。这为我解决了这个问题。
[1] http://www.php.net/manual/en/reserved.variables.server.php