> For the complete documentation index, see [llms.txt](https://learn.devlabss.my.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.devlabss.my.id/laravel/bab-7-fitur-create-and-validasi/7.5-mengatasi-error-419-page-expired.md).

# 7.5 Mengatasi Error 419 Page Expired

## Mengatasi error 419 Page Expired

Setelah mulai memakai form di Laravel, ada satu error yang sangat sering muncul.

Namanya **419 Page Expired**.

Banyak pemula langsung panik saat melihatnya.

Padahal error ini sangat umum.

Dan biasanya penyebabnya juga tidak jauh-jauh dari form, session, atau CSRF token.

### Teori awal dan analogi

Bayangkan Anda membawa formulir yang sudah lama ke loket perpustakaan.

Cap pengamannya sudah tidak berlaku.

Petugas akan menolak formulir itu dan meminta Anda memakai formulir baru.

Error `419 Page Expired` mirip seperti itu.

Laravel merasa request yang masuk sudah tidak valid lagi.

Penyebab paling seringnya adalah token form tidak ada, tidak cocok, atau session sudah kedaluwarsa.

### Penyebab paling umum

Di proyek Laravel dasar seperti modul ini, penyebab 419 biasanya salah satu dari ini:

* form `POST` tidak memakai `@csrf`
* halaman form sudah terlalu lama dibuka lalu baru dikirim
* session browser bermasalah
* file diubah tetapi browser masih memakai halaman lama

### Langkah pengecekan step-by-step

Kalau error ini muncul, cek dengan urut seperti ini.

{% stepper %}
{% step %}

### Cek apakah form sudah memakai `@csrf`

Buka file form Anda.

Biasanya:

`resources/views/buku/create.blade.php`

Pastikan di dalam tag `<form>` ada baris ini:

```blade
@csrf
```

Kalau baris ini tidak ada, itulah penyebab paling umum dari error 419.
{% endstep %}

{% step %}

### Pastikan method form memang benar

Untuk proses tambah data, form harus memakai:

```blade
<form action="{{ route('buku.store') }}" method="POST">
```

Kalau action salah atau method tidak sesuai, alur request bisa ikut bermasalah.
{% endstep %}

{% step %}

### Refresh halaman form

Kalau form sudah lama terbuka, jangan langsung klik tombol simpan.

Refresh dulu halaman form.

Lalu isi ulang datanya dan kirim lagi.

Kadang token lama sudah tidak cocok dengan session yang aktif sekarang.
{% endstep %}

{% step %}

### Pastikan server Laravel hidup normal

Sebelum mengetes ulang, pastikan server Laravel hidup.

Silakan pilih salah satu:

* buka **Laragon** lalu klik **Start All**
* atau jalankan `php artisan serve`

Kalau server sempat mati lalu hidup lagi, sebaiknya buka ulang halaman form dari awal.
{% endstep %}

{% step %}

### Uji ulang dari halaman form yang baru

Buka kembali:

```
http://127.0.0.1:8000/buku/create
```

Isi form dari awal.

Lalu kirim lagi.

Kalau token dan session sudah cocok, error 419 biasanya hilang.
{% endstep %}
{% endstepper %}

### Penjelasan pasca-praktik

Sekarang mari kita pahami kenapa error ini bisa muncul.

#### 1. Laravel memeriksa token

Saat form `POST` dikirim, Laravel akan memeriksa CSRF token yang ikut terkirim.

Kalau tokennya tidak ada atau tidak cocok, request ditolak.

#### 2. Session ikut berperan

Token ini berkaitan dengan session pengguna.

Kalau session berubah, habis, atau tidak sinkron, token lama bisa dianggap tidak sah.

#### 3. Kenapa namanya `Page Expired`

Nama ini sering membuat pemula bingung.

Padahal masalahnya bukan selalu karena halaman rusak.

Sering kali artinya hanyalah token atau session untuk halaman itu sudah tidak valid.

### Tanda bahwa masalah ada di CSRF

Kalau Anda melihat pola seperti ini, hampir pasti masalahnya terkait CSRF:

* error muncul saat klik tombol submit
* halaman form bisa dibuka normal
* error hanya terjadi pada request `POST`

Kalau halaman bahkan tidak bisa dibuka sejak awal, biasanya masalahnya bukan 419.

### Solusi cepat yang paling sering berhasil

Kalau ingin bergerak cepat, cek tiga hal ini dulu:

1. pastikan `@csrf` ada
2. refresh halaman form
3. kirim ulang dari halaman yang baru dibuka

Tiga langkah ini sering sudah cukup.

### Troubleshooting yang paling sering

Masalah yang paling sering muncul:

* **lupa menulis `@csrf`** — penyebab nomor satu
* **mengirim form dari tab lama** — token sudah kedaluwarsa
* **browser masih menyimpan halaman lama** — form belum termuat ulang
* **server sempat restart** — session lama tidak cocok lagi

{% hint style="warning" %}
Jangan buru-buru menyalahkan route atau controller saat melihat 419. Cek form dan CSRF token lebih dulu.
{% endhint %}

{% hint style="info" %}
Kalau Anda baru saja mengubah file form, simpan dulu file itu lalu refresh halaman sebelum mengetes ulang.
{% endhint %}

### Poin evaluasi bab 7.5

Pastikan Anda sudah memahami poin berikut:

* Saya tahu error 419 biasanya berkaitan dengan CSRF token atau session.
* Saya tahu form `POST` wajib memakai `@csrf`.
* Saya tahu form lama yang belum di-refresh bisa memicu 419.
* Saya tahu langkah cepat untuk mengecek dan memperbaiki error ini.

Jika semuanya sudah jelas, lanjut ke [7.6 Checkpoint: Uji Pemahamanmu Sebelum Lanjut!](/laravel/bab-7-fitur-create-and-validasi/7.6-checkpoint-uji-pemahamanmu-sebelum-lanjut.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://learn.devlabss.my.id/laravel/bab-7-fitur-create-and-validasi/7.5-mengatasi-error-419-page-expired.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
