fix: Pastikan CORS headers ditambahkan ke error response juga, tambah DEPLOY_CORS_FIX.md
This commit is contained in:
@@ -5,9 +5,12 @@ declare(strict_types=1);
|
||||
namespace App\Bootstrap;
|
||||
|
||||
use App\Middleware\CorsMiddleware;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Slim\App;
|
||||
use Slim\Factory\AppFactory;
|
||||
use Slim\Middleware\BodyParsingMiddleware;
|
||||
use Slim\Middleware\ErrorMiddleware;
|
||||
|
||||
class AppBootstrap
|
||||
{
|
||||
@@ -20,9 +23,6 @@ class AppBootstrap
|
||||
{
|
||||
$app = AppFactory::create();
|
||||
|
||||
// Add CORS middleware FIRST (before routing)
|
||||
$app->add(new CorsMiddleware());
|
||||
|
||||
// Add body parsing middleware
|
||||
$app->addBodyParsingMiddleware();
|
||||
|
||||
@@ -30,7 +30,35 @@ class AppBootstrap
|
||||
$app->addRoutingMiddleware();
|
||||
|
||||
// Add error middleware
|
||||
$app->addErrorMiddleware(true, true, true);
|
||||
$errorMiddleware = $app->addErrorMiddleware(true, true, true);
|
||||
|
||||
// Set custom error handler that includes CORS headers
|
||||
$errorHandler = $errorMiddleware->getDefaultErrorHandler();
|
||||
$errorMiddleware->setDefaultErrorHandler(function (
|
||||
ServerRequestInterface $request,
|
||||
\Throwable $exception,
|
||||
bool $displayErrorDetails,
|
||||
bool $logErrors,
|
||||
bool $logErrorDetails
|
||||
) use ($errorHandler, $app): ResponseInterface {
|
||||
$response = $errorHandler($request, $exception, $displayErrorDetails, $logErrors, $logErrorDetails);
|
||||
|
||||
// Add CORS headers to error response
|
||||
$corsMiddleware = new CorsMiddleware();
|
||||
return $corsMiddleware->process($request, new class($response) implements \Psr\Http\Server\RequestHandlerInterface {
|
||||
private $response;
|
||||
public function __construct($response) {
|
||||
$this->response = $response;
|
||||
}
|
||||
public function handle(\Psr\Http\Message\ServerRequestInterface $request): \Psr\Http\Message\ResponseInterface {
|
||||
return $this->response;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Add CORS middleware LAST (after error middleware)
|
||||
// This ensures CORS headers are added to all responses, including errors
|
||||
$app->add(new CorsMiddleware());
|
||||
|
||||
return $app;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user