diff --git a/LumenCors.php b/LumenCors.php index 37cf3a0..2a5eef7 100644 --- a/LumenCors.php +++ b/LumenCors.php @@ -1,7 +1,8 @@ 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS', ); + /** + * Set Access-Control-Allow-Origin on Response. + * + * @param Request $req + * @return Response + */ protected function setOrigin($req, $rsp) { $origin = $this->settings['origin']; if (is_callable($origin)) { // Call origin callback with request origin $origin = call_user_func($origin, - $req->header("Origin") + $req->headers->get("Origin") ); } - $rsp->header('Access-Control-Allow-Origin', $origin); + $rsp->headers->set('Access-Control-Allow-Origin', $origin); } + /** + * Set Access-Control-Expose-Headers on Response. + * + * @param Request $req + * @return Response + */ protected function setExposeHeaders($req, $rsp) { if (isset($this->settings['exposeHeaders'])) { $exposeHeaders = $this->settings['exposeHeaders']; @@ -28,22 +41,40 @@ protected function setExposeHeaders($req, $rsp) { $exposeHeaders = implode(", ", $exposeHeaders); } - $rsp->header('Access-Control-Expose-Headers', $exposeHeaders); + $rsp->headers->set('Access-Control-Expose-Headers', $exposeHeaders); } } + /** + * Set Access-Control-Max-Age on Response. + * + * @param Request $req + * @return Response + */ protected function setMaxAge($req, $rsp) { if (isset($this->settings['maxAge'])) { - $rsp->header('Access-Control-Max-Age', $this->settings['maxAge']); + $rsp->headers->set('Access-Control-Max-Age', $this->settings['maxAge']); } } + /** + * Set Access-Control-Allow-Credentials on Response. + * + * @param Request $req + * @return Response + */ protected function setAllowCredentials($req, $rsp) { if (isset($this->settings['allowCredentials']) && $this->settings['allowCredentials'] === True) { - $rsp->header('Access-Control-Allow-Credentials', 'true'); + $rsp->headers->set('Access-Control-Allow-Credentials', 'true'); } } + /** + * Set Access-Control-Allow-Methods on Response. + * + * @param Request $req + * @return Response + */ protected function setAllowMethods($req, $rsp) { if (isset($this->settings['allowMethods'])) { $allowMethods = $this->settings['allowMethods']; @@ -51,10 +82,16 @@ protected function setAllowMethods($req, $rsp) { $allowMethods = implode(", ", $allowMethods); } - $rsp->header('Access-Control-Allow-Methods', $allowMethods); + $rsp->headers->set('Access-Control-Allow-Methods', $allowMethods); } } + /** + * Set Access-Control-Allow-Headers on Response. + * + * @param Request $req + * @return Response + */ protected function setAllowHeaders($req, $rsp) { if (isset($this->settings['allowHeaders'])) { $allowHeaders = $this->settings['allowHeaders']; @@ -63,14 +100,20 @@ protected function setAllowHeaders($req, $rsp) { } } else { // Otherwise, use request headers - $allowHeaders = $req->header("Access-Control-Request-Headers"); + $allowHeaders = $req->headers->get("Access-Control-Request-Headers"); } if (isset($allowHeaders)) { - $rsp->header('Access-Control-Allow-Headers', $allowHeaders); + $rsp->headers->set('Access-Control-Allow-Headers', $allowHeaders); } } + /** + * Set all needed Cors Headers on Response. + * + * @param Request $req + * @return Response + */ protected function setCorsHeaders($req, $rsp) { // http://www.html5rocks.com/static/images/cors_server_flowchart.png @@ -92,8 +135,8 @@ protected function setCorsHeaders($req, $rsp) { /** * Handle an incoming request. * - * @param \Illuminate\Http\Request $request - * @param \Closure $next + * @param Request $request + * @param Closure $next * @return mixed */ public function handle($request, Closure $next) { diff --git a/composer.json b/composer.json index 76d0a4c..32776d1 100644 --- a/composer.json +++ b/composer.json @@ -18,6 +18,7 @@ } ], "require": { + "symfony/http-foundation": ">=3.2 <5" }, "autoload": { "psr-4": {