Php 受访问令牌请求头保护的图像

Php 受访问令牌请求头保护的图像,php,web-services,symfony,cookies,guzzle,Php,Web Services,Symfony,Cookies,Guzzle,我有一个网站服务,应该为我的网站提供图片。 问题在于,这些映像受令牌请求头的保护 我使用guzzle作为客户端库来调用Web服务并获取图像 $client = new \Guzzle\Service\Client(); $req = $client->get('https://www.customwebservice.be/v1/api/photo/ece1d868.jpg'); $req->addHeader('access_tokenid', 'token123'); $resp

我有一个网站服务,应该为我的网站提供图片。 问题在于,这些映像受令牌请求头的保护

我使用guzzle作为客户端库来调用Web服务并获取图像

$client = new \Guzzle\Service\Client();
$req = $client->get('https://www.customwebservice.be/v1/api/photo/ece1d868.jpg');
$req->addHeader('access_tokenid', 'token123');
$response = $req->send();
$test = ($response->getInfo());
echo '<img src="' . $test['url'] . '">';
但没有结果:S

如果我有一个cookie集,它的域与webservice和surf的url相同,那么它可以工作,但我不能为每个用户设置一个令牌cookie,对吗


Thnx提前

我不知道对用户隐藏此请求令牌有多重要,但如果是这样,您可以让应用程序充当获取/服务图像的代理

为了实现这一点,您可以添加一个自定义路由/操作,该路由/操作直接将映像传递给客户端,而无需临时存储映像。例如:

public function imageAction($filename)
{
    $response = \GuzzleHttp\get(
        'https://www.customwebservice.be/v1/api/photo/' . $filename,
        array('headers' => array('access_tokenid' => 'token123'))
    );

    return new Response(
        $response->getBody(),
        200,
        array('content-type' => $response->getContentType())
    );
}
您的模板如下所示:

<img src="{{ path('image', {'filename': 'ece1d868.jpg'}) }}" />

注意到这是一个相当低的解决方案,所以如果你的应用程序为大量的图像重页或者处理大量的流量,你应该考虑实现某种缓存解决方案。但这并不是我真正想要实现的:S 222$client=new\Guzzle\Service\client;223$req=$client->get';224$req->addHeader'access_tokenid'、'token123';225/$req->setResponseBody'/tmp/test.jpg';太棒了,它就像一个符咒!!我有清漆在它前面,所以它将被缓存。谢谢你的帮助!