public function fixBrokenOriginHeader(RequestInterface $request) { if (!method_exists($request, 'getHeaders') || !method_exists($request, 'getServer')) { // Not an HTTP request return; } $origin = $request->getServer('HTTP_ORIGIN', false); if (!$origin) { // No Origin header; nothing to do return; } if ($origin !== 'file://') { // Origin header is likely formed correctly; nothing to do return; } $headers = $request->getHeaders(); $headersArray = $headers->toArray(); // Remove all headers $headers->clearHeaders(); // Add the headers back one by one, but make sure the Origin headers is with the fixed value foreach ($headersArray as $key => $value) { if (strtolower($key) === 'origin') { $headers->addHeader(Origin::fromString('Origin: file:///')); } else { $headers->addHeaderLine($key, $value); } } }
public function testOriginFromStringCreatesValidOriginHeader() { $OriginHeader = Origin::fromString('Origin: http://zend.org'); $this->assertInstanceOf('Zend\\Http\\Header\\HeaderInterface', $OriginHeader); $this->assertInstanceOf('Zend\\Http\\Header\\Origin', $OriginHeader); }