2014-03-18 3 views
0

내 웹 사이트에 이미지를 제공해야하는 웹 서비스가 있습니다. 문제는 이미지가 "토큰"요청 헤더로 보호된다는 것입니다.액세스 토큰 요청 헤더로 보호 된 이미지

저는 webservice를 호출하고 이미지를 가져 오기 위해 클라이언트 라이브러리로 guzzle을 사용합니다.

$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

나는 웹 서비스와 같은 도메인 및 작동 URL로 서핑 설정 쿠키를 가지고 있지만 나는 모든 사용자 토큰 쿠키 오른쪽 설정할 수없는 경우 ? 사전에

Thnx을

나는 그것이 토큰 사용자로부터 숨겨진 요청을 유지하는 것이 얼마나 중요한지 모르겠지만, 그런 경우가 있다면 당신은 이미지를/가져 오는 역할을위한 프록시로 응용 프로그램 행동을 할 수
+0

이미지를 다운로드 할 수있는 방법을 알아 냈습니다. 그러나 이것은 내가 달성하기를 원하는 것이 아닙니다. S '' ''222 $ client = new \ Guzzle \ Service \ Client(); '' ''223 ​​$ req = $ client-> get ('https://www.customwebservice.be/v1/api/b4a9c1d52385.jpg'); '' ''224 $ req-> addHeader ('access_tokenid', 'token123'); '' ''225 // $ req-> setResponseBody ('/ tmp/test.jpg'); – evancauwenberg

답변

0

.

이렇게하려면 이미지를 임시 저장하지 않고 클라이언트에 직접 전달하는 사용자 지정 경로/동작을 추가 할 수 있습니다. 예 :

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'}) }}" /> 

하는 응용 프로그램이 이미지 무거운 많은 페이지를 제공 또는 처리 할 수있다, 그래서 만약이 상당히 저조한 솔루션이라고주의 트래픽이 많으면 어떤 종류의 캐싱 솔루션을 구현하는 것을 고려해야합니다.

+0

위대한 작품처럼 매력! 나는 그것의 앞에 광택이있어서 캐시 될 것이다. 귀하의 도움을 위해서 thnx! – evancauwenberg