Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
  • YardımLumen
  • Lumen POST Request Plesk Panelli Centos Sunucuda Çalışmıyor.

Merhaba. Lumen (8.0) ile basit bir REST Api yaptım. Bu api veritabanından belli verileri alıp, JSOn formatında istemciye veriyor. Test aşamasında, yalnızca kendisine gönderilen dataları geri veren bir echo server olarak bıraktım. Kendi bilgisayarımdaki kopyaya istek attığımda CURL ile attığım istekteki değerleri çıktı veriyor. Uygulamayı sunucuya yüklediğimde ise (Centos+Plesk VPS sunucu) POST methodlarını kabul etmiyor, etse de data kısmını siliyor. Boş çıktı veriyor. Bu durumun Lumen ile ilgili olma ihtimali nedir? Sunucu ile ilgili ise neden böyle bir durumla karşılaşıyorum. Fikirlerniz ve görüşleriniz için şimdiden teşekkür eder herkese iyi günler dilerim.

Aşağıda biraz daha detay vermeye çalıştım.

routes/web.php

$router->post('orders', [
    'uses' => 'ApiController@orders',
    //'middleware' => 'auth',
]);

ApiController.php

public function orders(Request $request)
    {
        if ($request->isJson()) {
            $data = $request->json()->all();
        } else {
            $data = $request->all();
        }
        return $data;
}

URL: https://xxx.com/api/orders

Bu URL'e başka servislerden Request geliyor. Şuan Test etmek için kendisine gönderilen datayı ekrana çıktı veriyor.

Kendi Ubuntu makinemden (terminalden) ise aşağıdaki gibi sunucudaki URL'e istek attığımda

curl --location --request POST 'https://xxx.com/api/orders' \
--header 'token: ttttttttttttttttt' \
--header 'Content-Type: application/json' \
--data-raw '{
"orderStatusId": 4
}'

Sunucu Günlüğü aşağıdaki gibi olmaktadır.

2020-10-30 16:10:08 Access 95.7.236.200 200 POST /api/orders HTTP/1.0 curl/7.68.0 418 Apache SSL/TLS erişimi

Data bloğu boş geliyor. Data kısmı kayboluyor. Ya da sunucuya ulaşamıyor.

Sunucudaki URL'ye istek atan başka bir servis ise POST olarak istek atmasına rağmen loglarda GET olarak istek geldiği görülüyor.

Diğer servisin isteği sonrası oluşan log:
2020-10-30 16:15:21 Error 94.103.37.154 405 GET /api/orders HTTP/1.0 RestSharp/106.11.4.0 2.10 K Apache SSL/TLS erişimi

Logda görüldüğü üzere POST olarak gönderilen istekler sunucuda GET olarak görülüyor.

Ubuntu Terminalden, kendi bilgisayarımdaki kopyaya aşağıdaki gibi istek attığımda ise

curl --location --request POST 'http://localhost/api/orders' \
--header 'token: tttttttttttttttt' \
--header 'Content-Type: application/json' \
--data-raw '{
"orderStatusId": "4"
}'

Gönderdiğim veriyi çıktı olarak vermektedir.

Sunucu firmasından aldığım destek sonrasında başka bir işletim sisteminde (Linux Mint) postman ile istek attım cevaplar geldi. Her şey doğru çalıştı. Fakat diğer işletim sisteminde yine postman üzerinden de terminal üzerinden de (CURL) attığım isteklere cevap gelmiyor. Bu URL'e istek atan benim dışımdaki başka bir istemciye de cevap gitmiyor. Bu durum DNS önbelliği yada benzer bir şeyden kaynaklanma ihtimali olabilir mi?

    MehmetCanYUMUTUTAN
    DNS cache ile ilgisi görünmüyor ama emin olmak için ilgili domainin IP'sine POST yapabilirsiniz.
    Sanki Plesk üzerindeki Firewall uygulaması ya da Fail2Ban uygulaması isteği kesiyormuş gibi görünüyor.
    Sunucuya ulaşılıyor ama POST kesiliyorsa Firewall, Sunucuya hiç ulaşılamıyorsa Fail2Ban. (Fail2Ban üzerinde kendi IP'nizi Trusted IP listesine ekleyin)
    Geçici olarak Plesk üzerinde bu iki servisi durdurup deneyebilirsiniz.
    Diğer ihtimal http/https konusu. İlgili domain kabul ediyorsa http ile deneyebilirsiniz.

    İstek yaptığınızda Header içinde Accept içeriğini application/json olarak gönderdiğinizden emin olun.

      Cevap yazan herkese teşekkür ederim.
      Sunucuda SSL vardı ve Plesk panelde 301 ssl yönlendirme ve tercih edilen URL yapısı "www.xxx.com" şeklinde ayarlanmış. Bu ayarda "www.xxx.com", "xxx.com" ve "hiçbiri" olarak seçenekler mevcut. Burda hiçbiri olanı seçtim. Ve sorun çözüldü.