WordPress Ajax/Post Response 404 Problemi ve Çözümü

Koca bir gün uğraşıp StackOverlow’un altını üstüne getirdim. Olayı her tarafından inceledim sanıyordum fakat altyapının WordPress olduğunu tamamen unutmuşum. Aramaların arasına bir de WordPress kelimesini eklesem bu kadar uğraşmama gerek kalmazmış.

Sorunumuz şuydu:

jQuery ile $.ajax veya $.post fonksiyonlarıyla bir formu POST ediyorum, her şey tamam form işlemini yapıyor bitiriyor. Sonuç dönüyor fakat jQuery success komutu çalışmıyor. Çünkü jQuery tarafında sonuç “404 – Not found” olarak çıkıyor. Sorunun sebebi, sahte 404 hatası. WordPress bunu 4.x sürümlerinde güvenlik sebebiyle eklemiş. Ve bu wp-blog-header’ı yüklediğiniz her yerde geçerli oluyor. Yani insanlar siz izin vermeden dosyalarınıza hiçbir şey POST edemiyor.

Çözüm de şöyle:

Ajax ile göndereceğiniz kısma html, jquery müdehale etmenize hiç gerek yok. Php dosyasında çıktı üretmeden önce yeter ki şunu ekleyin:

status_header( 200 )

Tabii ki bu ekleme yaptığınız dosya için bir güvenlik açığı doğuracaktır. Bunu isteğin geldiği IP adresini sorgulayarak veya farklı bir sorgulama kullanarak çözebilirsiniz.

One Comment

  1. Netkolay

    gerçekten çok sağolun bu sorunlar böyle bi yazılıma hiç yakışmıyor günlerdir bu sorunla bşa başayız masalef bu sorunu görmemezlikten gelemezler…

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir