12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <?php
- namespace Barryvdh\Cors\Tests;
- use Asm89\Stack\CorsService;
- use Symfony\Component\HttpKernel\HttpKernelInterface;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\Response;
- /**
- * Fork of asm89/stack-cors
- */
- class CorsKernel implements HttpKernelInterface
- {
- /**
- * @var \Symfony\Component\HttpKernel\HttpKernelInterface
- */
- private $app;
- /**
- * @var \Asm89\Stack\CorsService
- */
- private $cors;
- private $defaultOptions = array(
- 'allowedHeaders' => array(),
- 'allowedMethods' => array(),
- 'allowedOrigins' => array(),
- 'exposedHeaders' => false,
- 'maxAge' => false,
- 'supportsCredentials' => false,
- );
- public function __construct(HttpKernelInterface $app, array $options = array())
- {
- $this->app = $app;
- $this->cors = new CorsService(array_merge($this->defaultOptions, $options));
- }
- public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
- {
- if (!$this->cors->isCorsRequest($request)) {
- return $this->app->handle($request, $type, $catch);
- }
- if ($this->cors->isPreflightRequest($request)) {
- return $this->cors->handlePreflightRequest($request);
- }
- if (!$this->cors->isActualRequestAllowed($request)) {
- return new Response('Not allowed.', 403);
- }
- $response = $this->app->handle($request, $type, $catch);
- return $this->cors->addActualRequestHeaders($response, $request);
- }
- }
|