[#6 Troubleshoot] Error Hook executed successfully but returned HTTP 403
saya mendapatkan error ini disaat melakukan test di webhook gitlab
Hook executed successfully but returned HTTP 403 <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/> <title>Error 403 No valid crumb was included in the request</title> </head> <body><h2>HTTP ERROR 403 No valid crumb was included in the request</h2> <table> <tr><th>URI:</th><td>/job/playwright-from-gitlab/build</td></tr> <tr><th>STATUS:</th><td>403</td></tr> <tr><th>MESSAGE:</th><td>No valid crumb was included in the request</td></tr> <tr><th>SERVLET:</th><td>Stapler</td></tr> </table> <hr/><a href="https://eclipse.org/jetty">Powered by Jetty:// 10.0.20</a><hr/> </body> </html>
Terima kasih, ini error yang sering muncul saat GitLab mencoba trigger Jenkins tanpa "crumb" (CSRF token). Tapi gampang diatasi.
❗️Masalah:
GitLab Webhook ⟶ Jenkins
➡ HTTP 403 – No valid crumb was included in the request
Artinya: Jenkins menolak request karena tidak ada CSRF protection token (disebut "crumb" di Jenkins).
✅ Solusi 1: Nonaktifkan CSRF Protection (Paling mudah & cepat)
Jika Jenkins kamu hanya digunakan internal (LAN/local), kamu bisa mematikan proteksi CSRF:
🔧 Langkah-langkah:
-
Masuk ke Jenkins
-
Klik
Manage Jenkins
-
Klik
Configure Global Security
-
Scroll ke bagian "CSRF Protection"
-
Uncheck/disable opsi: ✅ Prevent Cross Site Request Forgery exploits
-
Klik Save
💡 Setelah ini, webhook GitLab bisa langsung trigger build tanpa error 403.
✅ Solusi 2: (Jika CSRF tidak boleh dinonaktifkan)
Kalau kamu harus tetap mengaktifkan CSRF protection (misalnya Jenkins diakses dari publik atau security concern):
-
Gunakan plugin
GitLab Plugin
yang mendukung trigger berbasis webhook denganGitLab Push Trigger
di dalam Jenkins job -
Atau, gunakan Jenkins REST API dengan crumb valid (lebih rumit)
Tapi karena kamu di LAN/internal dan hanya ingin GitLab ➝ Jenkins jalan, Solusi 1 adalah terbaik dan aman.
🔁 Setelah Nonaktif CSRF:
-
Ulangi
Test Webhook
dari GitLab -
Pastikan Jenkins Job langsung triggered
💬 Contoh Webhook URL
Tanpa auth token:
http://jenkins.local:8080/job/playwright-from-gitlab/build?token=gitlab-trigger
Kalau pakai user/token:
http://widianto:jenkinsapitoken@jenkins.local:8080/job/playwright-from-gitlab/build?token=gitlab-trigger
Jika kamu ingin tetap aktifkan CSRF, aku bisa bantu bikin curl
webhook + crumb, tapi saran saya — kalau di LAN/dev, nonaktifkan saja.
Kamu ingin saya bantu uji webhook setelah CSRF dimatikan?