chore: complete update
This commit is contained in:
53
src/Framework/Http/Middlewares/CORSMiddleware.php
Normal file
53
src/Framework/Http/Middlewares/CORSMiddleware.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Framework\Http\Middlewares;
|
||||
|
||||
use App\Framework\Http\HttpMiddleware;
|
||||
use App\Framework\Http\MiddlewareContext;
|
||||
use App\Framework\Http\MiddlewarePriority;
|
||||
use App\Framework\Http\MiddlewarePriorityAttribute;
|
||||
use App\Framework\Http\RequestStateManager;
|
||||
use App\Framework\Http\Request;
|
||||
use App\Framework\Http\Response;
|
||||
use App\Framework\Http\ResponseManipulator;
|
||||
|
||||
#[MiddlewarePriorityAttribute(MiddlewarePriority::CORS)]
|
||||
final readonly class CORSMiddleware implements HttpMiddleware
|
||||
{
|
||||
public function __construct(
|
||||
private ResponseManipulator $manipulator
|
||||
) {}
|
||||
|
||||
public function __invoke(MiddlewareContext $context, callable $next, RequestStateManager $stateManager): MiddlewareContext
|
||||
{
|
||||
// Debug-Ausgabe vor der Verarbeitung
|
||||
#var_dump('CORS Middleware Start - Kontext hat Response: ' . ($context->hasResponse() ? 'ja' : 'nein'));
|
||||
|
||||
// Nächste Middleware aufrufen UND den Kontext mit der Response behalten
|
||||
$resultContext = $next($context);
|
||||
|
||||
// Debug-Ausgabe nach der Verarbeitung
|
||||
#var_dump('CORS Middleware End - Kontext hat Response: ' . ($resultContext->hasResponse() ? 'ja' : 'nein'));
|
||||
|
||||
// Wenn eine Response vorhanden ist, CORS-Header hinzufügen
|
||||
if ($resultContext->hasResponse()) {
|
||||
$response = $resultContext->response;
|
||||
|
||||
// Aktualisierte Headers erstellen
|
||||
$updatedHeaders = $response->headers->with('Access-Control-Allow-Origin', '*');
|
||||
$updatedHeaders = $updatedHeaders->with('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
|
||||
$updatedHeaders = $updatedHeaders->with('Access-Control-Allow-Headers', 'Content-Type, Authorization');
|
||||
|
||||
// Neue Response mit aktualisierten Headers erstellen
|
||||
$updatedResponse = $this->manipulator->withHeaders($response, $updatedHeaders);
|
||||
|
||||
// Kontext mit der aktualisierten Response zurückgeben
|
||||
return $resultContext->withResponse($updatedResponse);
|
||||
}
|
||||
|
||||
// Wenn keine Response vorhanden ist, Kontext unverändert zurückgeben
|
||||
return $resultContext;
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user