improved CORS support

This commit is contained in:
pushrbx 2023-05-21 16:10:21 +01:00
parent 8917cda52c
commit e6a969402d
3 changed files with 39 additions and 2 deletions

View File

@ -0,0 +1,35 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Laravel\Lumen\Http\ResponseFactory;
class CorsMiddleware
{
public function __construct(private readonly ResponseFactory $responseFactory)
{
}
public function handle(Request $request, \Closure $next): Response
{
if ($request->isMethod('OPTIONS')) {
$headers = [
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'GET, OPTIONS',
'Access-Control-Max-Age' => '86400',
'Accept-Control-Allow-Headers' => 'Accept,Accept-Encoding,DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range',
'Content-Type' => 'text/plain',
'Content-Length' => '0'
];
$response = $this->responseFactory->make("", 204, $headers);
$response->setProtocolVersion("1.1");
}
else {
$response = $next($request);
}
return $response;
}
}

View File

@ -82,6 +82,10 @@ if (env('INSIGHTS', false)) {
$globalMiddleware[] = \App\Http\Middleware\Insights::class; $globalMiddleware[] = \App\Http\Middleware\Insights::class;
} }
if (env('CORS_MIDDLEWARE', false)) {
$globalMiddleware[] = \App\Http\Middleware\CorsMiddleware::class;
}
$app->middleware($globalMiddleware); $app->middleware($globalMiddleware);
$app->routeMiddleware([ $app->routeMiddleware([

View File

@ -28,8 +28,6 @@ ob_start("ob_gzhandler");
if (!env('APP_DEBUG')) { if (!env('APP_DEBUG')) {
header("Content-Type: application/json"); header("Content-Type: application/json");
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET");
} }
$app->run(); $app->run();