andriajah Tue Jun 2022 1 year ago

Solved Cors Access Control Allow Origin Laravel

Ketika saya sedang mengerjakan proyek laravel 9 saya dan saya membuat API backend, saya berhasil membuat tetapi ketika pengembang front-end memanggil API yang saya buat. Ini kembali seperti: "PCross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://learnl52.hd/register. (Reason: CORS header 'Access-Control-Allow-Origin' missing)." dan saya memang mencoba bagaimana menyelesaikan masalah ini. Saya juga mencoba dengan jquery dan angularjs dari backend tetapi selalu tidak menghasilkan apa-apa.

Akhirnya saya menemukan cara mengatasi masalah ini, saya membuat satu middleware yang memungkinkan Permintaan Lintas Asal di aplikasi laravel Anda. jadi mari kita buat middleware baru:

Create Middleware

php artisan make:middleware CORS

Sekarang Anda dapat memeriksa direktori Middleware (app/Http/Middleware ), Anda dapat menemukan file CORS.php dan meletakkan kode di bawah ini pada file itu.

app/Http/Middleware/CORS.php

 

namespace App\Http\Middleware;
use Closure;
class CORS
{
    public function handle($request, Closure $next)
    {
        header('Access-Control-Allow-Origin: *');
        

        $headers = [
            'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, DELETE',
            'Access-Control-Allow-Headers'=> 'Content-Type, X-Auth-Token, Origin'
        ];
        if($request->getMethod() == "OPTIONS") {
            return Response::make('OK', 200, $headers);
        }
        

        $response = $next($request);
        foreach($headers as $key => $value)
            $response->header($key, $value);
        return $response;
    }
}

Ok, sekarang daftarkan middleware baru yang dibuat pada file Kernel.php(app/Http/Kernel.php ) dan tambahkan baris berikut.

 

app/Http/Kernel.php

namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
	...
	...
    protected $routeMiddleware = [
        ...
        'cors' => \App\Http\Middleware\CORS::class,
    ];
}

Sekarang kita siap untuk menggunakan middleware 'cors' pada file rute jadi, gunakan cara berikut:

app/Http/routes.php

Route::group(['middleware' => ['api','cors'],'prefix' => 'api'], function () {
    Route::post('register', 'APIController@register');
    Route::post('login', 'APIController@login');
});
laravel 9 laravel laravel cors origin laravel tutorial