DNS RobotDNS Propagation Checker
BerandaDNSWHOISIPSSL
DNS RobotDNS Propagation Checker

Alat pemeriksaan DNS generasi terbaru

Kebijakan PrivasiKetentuan LayananTentang KamiBlogKontak

Alat DNS

Pencarian DNSTes Kecepatan DNSDomain ke IPPencarian NSPencarian MXLihat semua

Alat Email

Pemeriksa Rekaman SPFPemeriksa DMARCPemeriksa DKIMAlat Tes SMTPAnalisis Header EmailLihat semua

Alat Website

Pencarian WHOISCek Hosting WebsiteKetersediaan DomainPencari SubdomainPendeteksi CMSLihat semua

Alat Jaringan

Alat PingTraceroutePemeriksa PortPemeriksaan Header HTTPPemeriksaan Sertifikat SSLLihat semua

Alat IP

Pencarian IPIP Saya ApaPemeriksaan Daftar Hitam IPIP ke HostnamePencarian ASNLihat semua

Alat Utilitas

Pemindai QR CodePembuat QR CodeUPI QR Code GeneratorWiFi QR Code GeneratorPenerjemah Kode MorseLihat semua
© 2026 DNS Robot. Dikembangkan oleh: ❤ Shaik Brothers
Semua sistem beroperasi normal
Made with
Beranda/Blog/405 Method Not Allowed: Arti dan Cara Mengatasinya

405 Method Not Allowed: Arti dan Cara Mengatasinya

Shaik Vahid30 Sep 20268 menit baca
Halaman error 405 Not Allowed dari nginx di samping langkah demi langkah mengatasi 405 Method Not Allowed
Halaman error 405 Not Allowed dari nginx di samping langkah demi langkah mengatasi 405 Method Not Allowed

Poin Penting

405 Method Not Allowed berarti server mengenali URL-nya tetapi tidak menerima metode HTTP yang Anda pakai di sana, misalnya POST yang dikirim ke halaman yang hanya menerima GET. RFC 9110 mewajibkan server mencantumkan metode yang diterimanya di header Allow, jadi mulailah dengan membaca header itu. Penyebab umumnya adalah formulir atau panggilan API yang memakai metode keliru, POST ke file statis di nginx, route handler yang tidak mengekspor metode itu (Next.js, Flask, Django), WebDAV yang mencegat PUT dan DELETE di IIS, serta permintaan preflight CORS OPTIONS yang tidak ditangani server.

Advertisement

Apa Itu Error 405 Method Not Allowed?

405 Method Not Allowed adalah kode status HTTP yang berarti server mengenali alamat yang Anda minta, tetapi tidak mengizinkan metode yang dipakai permintaan Anda. RFC 9110 (bagian 15.5.6) mendefinisikannya sebagai metode yang "known by the origin server but not supported by the target resource", yaitu dikenal oleh server asal tetapi tidak didukung oleh resource tujuan.

Setiap permintaan HTTP punya metode: GET untuk membaca halaman, POST untuk mengirim formulir atau membuat sesuatu, PUT dan PATCH untuk memperbarui, DELETE untuk menghapus, dan OPTIONS untuk menanyakan apa yang diizinkan. Kode 405 berarti URL-nya ada, tetapi tidak untuk metode tersebut. Jika URL-nya sama sekali tidak ada, Anda akan mendapat 404.

Karena error ini menyangkut cara permintaan dibuat, bukan halaman yang hilang, 405 hampir selalu harus diperbaiki oleh developer situs. Pengunjung biasanya menemuinya setelah mengirim formulir atau mengikuti tautan yang sudah usang.

Catatan

Standar menyatakan respons 405 wajib menyertakan header Allow yang mencantumkan metode yang diterima URL tersebut, misalnya Allow: GET, HEAD. Inilah petunjuk tercepat untuk mengetahui apa yang salah.

Tampilan Error 405

Server / frameworkPesan khas
nginx405 Not Allowed (dengan tulisan nginx di bawahnya)
ApacheMethod Not Allowed. The requested method POST is not allowed for this URL.
IISHTTP Error 405.0 - Method Not Allowed. The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used.
Next.js / APIRespons kosong atau JSON dengan status 405, sering hanya terlihat di DevTools
Konsol browser (CORS)Error CORS, karena preflight OPTIONS menerima 405

Advertisement

Langkah 1: Baca Header Allow

Tanyakan ke server metode apa saja yang diterima untuk URL itu. Kirim permintaan OPTIONS, atau ulangi permintaan yang gagal sambil menampilkan header-nya:

bash
# Metode apa saja yang diterima URL ini?
curl -i -X OPTIONS https://example.com/api/contact

# Ulangi permintaan yang gagal, lalu lihat status dan header Allow
curl -i -X POST https://example.com/api/contact -d 'name=test'
# HTTP/2 405
# allow: GET, HEAD

Alat HTTP Headers dari DNS Robot menampilkan kode status dan header yang dikembalikan sebuah URL untuk permintaan GET biasa, yang berguna saat Anda memeriksa halaman di browser, bukan API.

Tidak semua server mengikuti aturan ini. Halaman 405 bawaan nginx, misalnya, dikirim tanpa header Allow, jadi di nginx Anda perlu memeriksa blok location mana yang menangani URL tersebut (Solusi 2).

Jika Anda Pengunjung

  • Kembali dan muat ulang halaman, lalu kirim formulirnya lagi. Formulir yang dimuat dari salinan cache lama bisa mengirim data ke alamat yang sudah berubah.

  • Jangan refresh setelah mengirim formulir. Me-refresh halaman hasil pengiriman formulir bisa mengirim ulang POST ke URL yang hanya menerima GET.

  • Periksa alamatnya apakah ada salah ketik, atau buka beranda situs dan navigasikan ulang.

  • Laporkan. Jika formulir di situs selalu gagal, pemilik situs yang perlu memperbaikinya, jadi kirimkan alamat halamannya kepada mereka.

Advertisement

Solusi 1: Kirim Metode yang Benar ke URL yang Benar

Penyebab paling umum di kode hanyalah ketidakcocokan: formulir atau panggilan fetch() memakai POST padahal endpoint hanya menerima GET, atau permintaan dikirim ke URL halaman, bukan URL API. Bandingkan metode di kode Anda dengan header Allow dan dokumentasi API-nya.

javascript
// Endpoint ini hanya mengizinkan POST, jadi GET (bawaan fetch) menghasilkan 405
const res = await fetch("/api/contact", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ name: "Ana" }),
})
if (res.status === 405) console.log("Allowed:", res.headers.get("allow"))

Tips

Waspadai garis miring di akhir URL dan redirect. Jika /api/contact mengalihkan ke /api/contact/ dengan 301 atau 302, banyak klien mengulang permintaan sebagai GET, lalu endpoint yang hanya menerima POST menjawab 405. Gunakan Redirect Checker untuk melihat setiap hop.

Solusi 2: nginx Mengembalikan 405 untuk POST ke File Statis

Handler file statis nginx hanya melayani GET dan HEAD. POST ke file .html, atau ke location yang menyajikan file alih-alih meneruskan permintaan ke aplikasi Anda, akan mendapat 405 Not Allowed. Ini sering terjadi ketika action sebuah formulir mengarah ke halaman statis, atau ketika blok location yang ditujukan untuk aplikasi Anda tidak cocok.

Solusi sebenarnya adalah mengirim POST ke aplikasi (PHP, Node, Python) dengan proxy_pass atau fastcgi_pass di blok location yang tepat. Periksa blok mana yang menangani URL tersebut:

nginx
# Kiriman formulir harus sampai ke aplikasi, bukan ke handler file statis
location /api/ {
    proxy_pass http://127.0.0.1:3000;
}

# Uji dan reload setelah ada perubahan
# sudo nginx -t && sudo systemctl reload nginx

Tips

Sebagian panduan menyarankan error_page 405 =200 $uri; untuk mengubah 405 menjadi 200. Itu hanya menyembunyikan error: data POST tetap tidak pernah sampai ke kode Anda. Arahkan permintaan ke aplikasi sebagai gantinya.

Advertisement

Solusi 3: IIS Memblokir PUT dan DELETE (WebDAV)

Di server Windows yang menjalankan IIS, modul WebDAV mengambil alih verb PUT dan DELETE, sehingga REST API (ASP.NET Web API dan lainnya) menjawab HTTP Error 405.0 untuk keduanya. Jika Anda tidak memakai WebDAV, hapus modul itu untuk situs Anda di web.config:

xml
<system.webServer>
  <modules>
    <remove name="WebDAVModule" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
  </handlers>
</system.webServer>

Periksa juga pengaturan Request Filtering situs di IIS Manager (tab HTTP Verbs), yang bisa langsung menolak metode tertentu (IIS melaporkannya sebagai 404.6, bukan 405).

Solusi 4: Tambahkan Metode ke Route Handler Anda

Framework mengembalikan 405 ketika sebuah route ada tetapi tidak punya handler untuk metode yang dipakai:

  • Next.js (App Router): route.ts hanya menjawab metode yang diekspornya. Jika file itu mengekspor GET tetapi tidak POST, permintaan POST menghasilkan 405. Tambahkan export async function POST(request: Request) { … }.

  • Flask: secara bawaan, route hanya menerima GET. Gunakan @app.route("/contact", methods=["GET", "POST"]).

  • Django: class-based view mengembalikan 405 untuk metode yang tidak punya handler yang cocok (tambahkan method post()), dan dekorator require_http_methods melakukan hal yang sama.

  • Express: secara bawaan, metode yang tidak cocok akan jatuh ke 404, bukan 405. Jika API Anda seharusnya mengembalikan 405, tambahkan handler penampung (catch-all) yang mengatur header Allow.

Peringatan

Jangan mengatasi 405 dengan mengizinkan semua metode di semua route. Izinkan hanya metode yang benar-benar didukung setiap endpoint, dan pastikan header Allow tetap akurat.

Advertisement

Solusi 5: Tangani Permintaan Preflight CORS (OPTIONS)

Ketika halaman web memanggil API di domain lain dengan JSON atau header khusus, browser lebih dulu mengirim permintaan preflight OPTIONS. Jika API menjawab permintaan OPTIONS itu dengan 405, browser melaporkan error CORS dan tidak pernah mengirim permintaan yang sebenarnya, padahal endpoint aslinya akan berfungsi.

Buat API menjawab OPTIONS untuk route tersebut dengan 204 atau 200 beserta header Access-Control-Allow-Methods dan Access-Control-Allow-Headers yang tepat. Sebagian besar framework punya middleware CORS yang melakukannya untuk Anda. Contohnya, DNS Lookup API milik DNS Robot sendiri menjawab preflight dengan 204 dan header CORS, sehingga browser bisa memanggilnya dari situs mana pun.

Tips

Di DevTools (F12) → Jaringan (Network), aktifkan filter yang menampilkan semua permintaan, lalu cari permintaan OPTIONS tepat sebelum panggilan yang gagal. Statusnya memberi tahu Anda apakah preflight-lah masalahnya.

405 vs 400, 403, 404, dan 501

KodeArti
405 Method Not AllowedURL-nya ada, tetapi tidak untuk metode ini
400 Bad RequestPermintaannya sendiri tidak valid
403 ForbiddenServer memahami permintaan Anda tetapi tidak mengizinkan akses
404 Not FoundTidak ada apa pun di URL ini
501 Not ImplementedServer tidak mendukung metode ini untuk URL mana pun

Panduan terkait: 400 Bad Request, 403 Forbidden, dan 401 Unauthorized.

Periksa apa yang dikembalikan sebuah URL

HTTP Headers Checker dari DNS Robot menampilkan kode status dan header respons untuk URL apa pun, sehingga Anda bisa memastikan 405 dan melihat perangkat lunak server di baliknya.

Coba HTTP Headers Checker

Advertisement

Pertanyaan yang Sering Diajukan

Artinya server mengenali URL-nya tetapi tidak menerima metode HTTP yang dipakai, misalnya POST yang dikirim ke halaman yang hanya mengizinkan GET. Responsnya seharusnya menyertakan header Allow yang mencantumkan metode yang diterima URL tersebut.

Alat Terkait

HTTP Headers CheckRedirect CheckerSSL Certificate Check

Artikel Terkait

400 Bad Request: Arti dan Cara Mengatasinya403 Forbidden Error: Arti, Penyebab, dan Cara MengatasinyaError HTTP 401 Unauthorized: Arti dan Cara Mengatasinya

Daftar Isi

  • Apa Itu Error 405 Method Not Allowed?
  • Tampilan Error 405
  • Langkah 1: Baca Header Allow
  • Jika Anda Pengunjung
  • Solusi 1: Kirim Metode yang Benar ke URL yang Benar
  • Solusi 2: nginx Mengembalikan 405 untuk POST ke File Statis
  • Solusi 3: IIS Memblokir PUT dan DELETE (WebDAV)
  • Solusi 4: Tambahkan Metode ke Route Handler Anda
  • Solusi 5: Tangani Permintaan Preflight CORS (OPTIONS)
  • 405 vs 400, 403, 404, dan 501
  • Pertanyaan yang Sering Diajukan