Imbo\EventListener\Cors::setExposedHeaders PHP Method

setExposedHeaders() public method

Right before the response is sent to the client, whitelist all included Imbo-headers in the "Access-Control-Expose-Headers"-header
public setExposedHeaders ( Imbo\EventManager\EventInterface $event )
$event Imbo\EventManager\EventInterface The event instance
    public function setExposedHeaders(EventInterface $event)
    {
        // If this request was disallowed, don't expose any headers
        if (!$this->requestAllowed) {
            return;
        }
        $headers = ['X-Imbo-ImageIdentifier'];
        foreach ($event->getResponse()->headers as $header => $value) {
            if (strpos($header, 'x-imbo') === 0) {
                $headers[] = implode('-', array_map('ucfirst', explode('-', $header)));
            }
        }
        $event->getResponse()->headers->add(['Access-Control-Expose-Headers' => implode(', ', $headers)]);
    }

Usage Example

Example #1
0
 /**
  * @covers Imbo\EventListener\Cors::setExposedHeaders
  */
 public function testDoesNotAddExposeHeadersHeaderWhenOriginIsInvalid()
 {
     $listener = new Cors([]);
     $headers = $this->getMock('Symfony\\Component\\HttpFoundation\\HeaderBag');
     $headers->expects($this->never())->method('add');
     $this->response->headers = $headers;
     $listener->setExposedHeaders($this->event);
 }