Membuat Middleware Cors dan ForceJson
Membuat Middleware Cors dan ForceJson
4 Sheet
Membuat Cors
namespace App\Http\Middleware; use Closure;use Illuminate\Http\Request;use Symfony\Component\HttpFoundation\Response; class CorsMiddleware{ /** * Handle an incoming request. * * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next */ public function handle($request, Closure $next) { $response = $next($request); // Menambahkan header CORS ke respons $response->headers->set('Access-Control-Allow-Origin', '*'); // Ganti '*' dengan domain yang diizinkan $response->headers->set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); $response->headers->set('Access-Control-Allow-Headers', 'Content-Type, Authorization'); $response->headers->set('Access-Control-Allow-Credentials', 'true'); // Jika permintaan adalah preflight OPTIONS, kembalikan respons kosong dengan status 200 if ($request->getMethod() == 'OPTIONS') { return response()->json([], 200); } return $response; }Membuat ForceJson
namespace App\Http\Middleware; use Closure;use Illuminate\Http\Request;use Symfony\Component\HttpFoundation\Response; class ForceJsonResponse{ /** * Handle an incoming request. * * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next */ public function handle(Request $request, Closure $next): Response { $response = $next($request); // Memastikan header 'Accept' adalah 'application/json' if (!$request->expectsJson()) { return response()->json([ 'result' => [ 'status' => '406', 'message' => 'Not Acceptable: API requests must include Accept: application/json' ] ], 406); } return $response; }fungsi ini untuk mengatasi jika API ini di panggil tidak menyertakan Header Accep: application-json maka akan ada response seperti diatas
Mendaftarkan ke Kernel.php
pada app/Http/Kernel.php anda tambahkan pada bagian ini untuk ForceJson
protected $middleware = [ // \App\Http\Middleware\TrustHosts::class, \App\Http\Middleware\TrustProxies::class, \Illuminate\Http\Middleware\HandleCors::class, \App\Http\Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,+ \App\Http\Middleware\ForceJsonResponse::class,];pada app/Http/Kernel.php anda tambahkan pada bagian ini untuk Cors
protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, \Illuminate\Routing\Middleware\ThrottleRequests::class . ':api', \Illuminate\Routing\Middleware\SubstituteBindings::class,+ \App\Http\Middleware\CorsMiddleware::class, ],];Komentar
Ada 0 komentar pada episode ini.