DNS RobotDNS Propagation Checker
Ana SayfaDNSWHOISIPSSL
DNS RobotDNS Propagation Checker

Yeni nesil DNS yayılım kontrol aracı

Gizlilik PolitikasıKullanım KoşullarıHakkımızdaBlogİletişim

DNS Araçları

DNS SorgulamaDNS Hız TestiAlan Adından IP'yeNS SorgulamaMX SorgulamaTümünü gör

E-posta Araçları

SPF Kayıt KontrolüDMARC KontrolüDKIM KontrolüSMTP Test AracıE-posta Başlık AnaliziTümünü gör

Web Sitesi Araçları

WHOIS SorgulamaHosting Kontrol AracıAlan Adı Müsaitlik KontrolüAlt Alan Adı BulucuCMS AlgılayıcıTümünü gör

Ağ Araçları

Ping AracıTraceroutePort KontrolüHTTP Başlık KontrolüSSL Sertifika KontrolüTümünü gör

IP Araçları

IP SorgulamaIP Adresim NedirIP Kara Liste KontrolüIP'den Hostname'eASN SorgulamaTümünü gör

Yardımcı Araçlar

QR Kod OkuyucuQR Kod OluşturucuUPI QR Code GeneratorWiFi QR Code GeneratorMors Kodu ÇeviriciTümünü gör
© 2026 DNS Robot. Geliştiren: ❤ Shaik Brothers
Tüm sistemler çalışıyor
Made with
Ana Sayfa/Blog/405 Method Not Allowed Hatası: Nedir ve Nasıl Çözülür?

405 Method Not Allowed Hatası: Nedir ve Nasıl Çözülür?

Shaik Vahid30 Eyl 20268 dk okuma
nginx 405 Not Allowed hata sayfası ve 405 Method Not Allowed için adım adım çözümler
nginx 405 Not Allowed hata sayfası ve 405 Method Not Allowed için adım adım çözümler

Önemli Bilgi

405 Method Not Allowed, sunucunun URL'yi tanıdığı ancak orada kullandığınız HTTP yöntemini kabul etmediği anlamına gelir; örneğin yalnızca GET kabul eden bir sayfaya gönderilen bir POST. RFC 9110, sunucunun kabul ettiği yöntemleri bir Allow başlığında listelemesini zorunlu kılar; bu yüzden işe o başlığı okuyarak başlayın. Tipik nedenler şunlardır: yanlış yöntem kullanan bir form veya API çağrısı, nginx'te statik bir dosyaya yapılan POST, o yöntemi dışa aktarmayan bir rota işleyicisi (Next.js, Flask, Django), IIS'te PUT ve DELETE isteklerini araya girip yakalayan WebDAV ve sunucunun işlemediği CORS preflight OPTIONS istekleri.

Advertisement

405 Method Not Allowed Hatası Nedir?

405 Method Not Allowed (izin verilmeyen yöntem), sunucunun istediğiniz adresi tanıdığı, ancak isteğinizin kullandığı yönteme izin vermediği anlamına gelen bir HTTP durum kodudur. RFC 9110 (bölüm 15.5.6) bunu, yöntemin "known by the origin server but not supported by the target resource" (kaynak sunucu tarafından bilinen, ancak hedef kaynak tarafından desteklenmeyen) olması şeklinde tanımlar.

Her HTTP isteğinin bir yöntemi vardır: bir sayfayı okumak için GET, bir form göndermek veya bir şey oluşturmak için POST, güncellemek için PUT ve PATCH, silmek için DELETE, nelere izin verildiğini sormak için OPTIONS. 405, URL'nin var olduğu, ancak o fiil için var olmadığı anlamına gelir. URL hiç var olmasaydı bunun yerine 404 alırdınız.

Sorun eksik bir sayfayla değil, isteğin nasıl yapıldığıyla ilgili olduğu için 405 hatasını neredeyse her zaman sitenin geliştiricisinin düzeltmesi gerekir. Ziyaretçiler bu hatayla genellikle bir form gönderdikten veya güncelliğini yitirmiş bir bağlantıyı izledikten sonra karşılaşır.

Not

Standarda göre bir 405 yanıtı, URL'nin kabul ettiği yöntemleri listeleyen bir Allow başlığı içermek zorundadır; örneğin Allow: GET, HEAD. Neyin ters gittiğine dair en hızlı ipucu budur.

405 Hatası Nasıl Görünür

Sunucu / frameworkTipik mesaj
nginx405 Not Allowed (altında nginx yazar)
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 / API'ler405 durum kodlu boş veya JSON bir yanıt; çoğu zaman yalnızca DevTools'ta görünür
Tarayıcı konsolu (CORS)OPTIONS preflight isteği 405 aldığı için bir CORS hatası

Advertisement

Adım 1: Allow Başlığını Okuyun

Sunucuya o URL için hangi yöntemleri kabul ettiğini sorun. Ya bir OPTIONS isteği gönderin ya da başarısız olan isteği başlıkları gösterecek şekilde tekrarlayın:

bash
# Bu URL hangi yöntemleri kabul ediyor?
curl -i -X OPTIONS https://example.com/api/contact

# Başarısız isteği tekrarlayın; durum koduna ve Allow başlığına bakın
curl -i -X POST https://example.com/api/contact -d 'name=test'
# HTTP/2 405
# allow: GET, HEAD

DNS Robot'un HTTP Başlık Kontrolü aracı, bir URL'nin normal bir GET isteğine döndürdüğü durum kodunu ve başlıkları gösterir; bu da bir API yerine tarayıcıda bir sayfayı kontrol ederken işinize yarar.

Her sunucu bu kurala uymaz. Örneğin nginx'in yerleşik 405 sayfası Allow başlığı olmadan gönderilir; bu yüzden nginx'te bunun yerine URL'yi hangi location bloğunun işlediğini kontrol etmeniz gerekir (Çözüm 2).

Ziyaretçiyseniz

  • Geri dönüp sayfayı yeniden yükleyin, ardından formu tekrar gönderin. Önbellekteki eski bir kopyadan yüklenen bir form, o zamandan beri değişmiş bir adrese gönderim yapabilir.

  • Gönderdikten sonra sayfayı yenilemeyin. Bir form gönderiminin sonucu olan sayfayı yenilemek, yalnızca GET kabul eden bir URL'ye POST isteğini yeniden gönderebilir.

  • Adreste yazım hatası olup olmadığını kontrol edin ya da sitenin ana sayfasını açıp yeniden gezinin.

  • Sorunu bildirin. Sitedeki bir form her seferinde başarısız oluyorsa sorunu site sahibinin çözmesi gerekir; ona sayfanın adresini gönderin.

Advertisement

Çözüm 1: Doğru Yöntemi Doğru URL'ye Gönderin

Kodda en yaygın neden basit bir uyumsuzluktur: uç nokta yalnızca GET kabul ederken bir form veya fetch() çağrısı POST kullanır ya da istek API URL'si yerine sayfa URL'sine gider. Kodunuzdaki yöntemi Allow başlığıyla ve API'nin belgeleriyle karşılaştırın.

javascript
// Uç nokta yalnızca POST'a izin verir; bu yüzden GET (fetch'in varsayılanı) 405 döndürür
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"))

İpucu

Sondaki eğik çizgilere ve yönlendirmelere dikkat edin. /api/contact adresi 301 veya 302 ile /api/contact/ adresine yönlendiriyorsa birçok istemci isteği GET olarak tekrarlar ve yalnızca POST kabul eden uç nokta da 405 yanıtı verir. Her adımı görmek için Yönlendirme Kontrolü aracını kullanın.

Çözüm 2: nginx Statik Dosyalara Yapılan POST İçin 405 Döndürüyor

nginx'in statik dosya işleyicisi yalnızca GET ve HEAD isteklerine yanıt verir. Bir .html dosyasına ya da isteği uygulamanıza iletmek yerine dosya sunan bir location'a yapılan POST, 405 Not Allowed alır. Bu çoğu zaman bir formun action değeri statik bir sayfayı gösterdiğinde veya uygulamanız için tasarlanmış bir location bloğu eşleşmediğinde olur.

Asıl çözüm, POST isteğini doğru location bloğunda proxy_pass veya fastcgi_pass ile bir uygulamaya (PHP, Node, Python) göndermektir. URL'yi hangi bloğun işlediğini kontrol edin:

nginx
# Form gönderimleri statik dosya işleyicisine değil, uygulamaya ulaşmalı
location /api/ {
    proxy_pass http://127.0.0.1:3000;
}

# Değişikliklerden sonra test edip yeniden yükleyin
# sudo nginx -t && sudo systemctl reload nginx

İpucu

Bazı rehberler 405'i 200'e çevirmek için error_page 405 =200 $uri; kullanmayı önerir. Bu yalnızca hatayı gizler: POST verileri yine de kodunuza hiç ulaşmaz. Bunun yerine isteği uygulamaya yönlendirin.

Advertisement

Çözüm 3: IIS, PUT ve DELETE İsteklerini Engelliyor (WebDAV)

IIS çalıştıran Windows sunucularında WebDAV modülü PUT ve DELETE fiillerini sahiplenir; bu yüzden REST API'ler (ASP.NET Web API ve diğerleri) bu istekler için HTTP Error 405.0 yanıtı verir. WebDAV kullanmıyorsanız onu web.config dosyasında siteniz için kaldırın:

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

IIS Yöneticisi'nde sitenin İstek Filtreleme (Request Filtering) ayarlarını da kontrol edin (HTTP Verbs sekmesi); bu ayarlar belirli yöntemleri doğrudan reddedebilir (IIS bunları 405 değil, 404.6 olarak bildirir).

Çözüm 4: Yöntemi Rota İşleyicinize Ekleyin

Framework'ler, bir rota var olduğu halde kullanılan yöntem için bir işleyicisi olmadığında 405 döndürür:

  • Next.js (App Router): bir route.ts dosyası yalnızca dışa aktardığı yöntemlere yanıt verir. GET dışa aktarılıp POST aktarılmamışsa bir POST isteği 405 döndürür. export async function POST(request: Request) { … } ekleyin.

  • Flask: rotalar varsayılan olarak yalnızca GET kabul eder. @app.route("/contact", methods=["GET", "POST"]) kullanın.

  • Django: sınıf tabanlı görünümler, eşleşen bir işleyicisi olmayan yöntemler için 405 döndürür (bir post() metodu ekleyin); require_http_methods dekoratörü de aynısını yapar.

  • Express: varsayılan olarak eşleşmeyen bir yöntem 405'e değil, 404'e düşer. API'nizin 405 döndürmesi gerekiyorsa Allow başlığını ayarlayan, her şeyi yakalayan bir işleyici ekleyin.

Uyarı

Bir 405 hatasını her rotada her yönteme izin vererek düzeltmeyin. Yalnızca her uç noktanın gerçekten desteklediği yöntemlere izin verin ve Allow başlığını doğru tutun.

Advertisement

Çözüm 5: CORS Preflight (OPTIONS) İsteklerini İşleyin

Bir web sayfası başka bir alan adındaki bir API'yi JSON veya özel başlıklarla çağırdığında, tarayıcı önce bir OPTIONS preflight (ön kontrol) isteği gönderir. API bu OPTIONS isteğine 405 ile yanıt verirse tarayıcı bir CORS hatası bildirir ve asıl isteği hiç göndermez; oysa asıl uç nokta çalışacaktı.

API'nin bu rotalar için OPTIONS isteklerine doğru Access-Control-Allow-Methods ve Access-Control-Allow-Headers başlıklarıyla birlikte 204 veya 200 ile yanıt vermesini sağlayın. Çoğu framework'te bunu sizin yerinize yapan bir CORS ara yazılımı bulunur. Örneğin DNS Robot'un kendi DNS Sorgulama API'si, preflight isteğine 204 ve CORS başlıklarıyla yanıt verir; böylece tarayıcılar onu herhangi bir siteden çağırabilir.

İpucu

DevTools'ta (F12) → Ağ (Network) panelinde tüm istekleri gösteren filtreyi etkinleştirin ve başarısız çağrının hemen öncesindeki OPTIONS isteğini bulun. Onun durum kodu, sorunun preflight olup olmadığını gösterir.

405 ile 400, 403, 404 ve 501 Arasındaki Farklar

KodAnlamı
405 Method Not AllowedURL var, ancak bu yöntem için değil
400 Bad Requestİsteğin kendisi hatalı biçimlendirilmiş
403 ForbiddenSunucu sizi anladı, ancak erişime izin vermiyor
404 Not FoundBu URL'de hiçbir şey yok
501 Not ImplementedSunucu bu yöntemi hiçbir URL için desteklemiyor

İlgili rehberler: 400 Bad Request, 403 Forbidden ve 401 Unauthorized.

Bir URL'nin ne döndürdüğünü kontrol edin

DNS Robot'un HTTP Başlık Kontrolü aracı, herhangi bir URL'nin durum kodunu ve yanıt başlıklarını gösterir; böylece bir 405 hatasını doğrulayabilir ve arkasındaki sunucu yazılımını görebilirsiniz.

Dene HTTP Başlık Kontrolü

Advertisement

Sıkça Sorulan Sorular

Sunucunun URL'yi tanıdığı, ancak kullanılan HTTP yöntemini kabul etmediği anlamına gelir; örneğin yalnızca GET'e izin veren bir sayfaya gönderilen bir POST. Yanıt, o URL'nin kabul ettiği yöntemleri listeleyen bir Allow başlığı içermelidir.

İlgili Araçlar

HTTP Headers CheckRedirect CheckerSSL Certificate Check

İlgili Makaleler

400 Bad Request Hatası: Nedir ve Nasıl Çözülür?403 Forbidden Hatasi: Ne Anlama Gelir ve Nasil DuzeltilirHTTP 401 Unauthorized Hatasi: Ne Anlama Gelir ve Nasil Duzeltilir

İçindekiler

  • 405 Method Not Allowed Hatası Nedir?
  • 405 Hatası Nasıl Görünür
  • Adım 1: Allow Başlığını Okuyun
  • Ziyaretçiyseniz
  • Çözüm 1: Doğru Yöntemi Doğru URL'ye Gönderin
  • Çözüm 2: nginx Statik Dosyalara Yapılan POST İçin 405 Döndürüyor
  • Çözüm 3: IIS, PUT ve DELETE İsteklerini Engelliyor (WebDAV)
  • Çözüm 4: Yöntemi Rota İşleyicinize Ekleyin
  • Çözüm 5: CORS Preflight (OPTIONS) İsteklerini İşleyin
  • 405 ile 400, 403, 404 ve 501 Arasındaki Farklar
  • Sıkça Sorulan Sorular