Telefondan localhost ve webhook testi

Mobil API testinin en klasik kafa karışıklığı, çözülmüş hâliyle. · English version →

Tek cümlelik cevap

localhost her zaman "bu cihaz" demektir — telefonda telefonu gösterir. Aynı Wi-Fi'da laptop'ın LAN IP'sini, her yerden Tailscale'i, internet size ulaşacaksa tüneli kullanın.

Yol 1 — Aynı Wi-Fi: LAN IP (ücretsiz, 2 dakika)

Laptop'ın adresini bulun (macOS: ipconfig getifaddr en0 · Windows: ipconfig · Linux: hostname -I) ve telefondan localhost:3000 yerine http://192.168.1.42:3000 çağırın. "Hâlâ refused" vakalarının %90'ı iki ayrıntıdan çıkar: dev sunucusu sadece loopback'i değil tüm arabirimleri dinlemeli (vite --host, next dev -H 0.0.0.0, flask run --host=0.0.0.0…) ve işletim sistemi güvenlik duvarı gelen bağlantıya izin vermeli. iOS'ta ilk LAN isteğinde çıkan Yerel Ağ iznini de kabul edin — yoksa her istek sessizce düşer.

Yol 2 — Tailscale: cihazlarınız, tek özel ağ

Laptop ve telefona Tailscale kurun, aynı hesapla girin, bitti: her cihaz kalıcı bir özel adres alır (100.x.y.z veya my-macbook gibi MagicDNS adı). Telefon artık koltuktan, ofisten, hücresel veriden dev sunucunuza ulaşır — port yönlendirme yok, internete açılan hiçbir şey yok, kişisel kullanımda ücretsiz. "Her gün sorunsuz çalışsın" seçeneği bu.

Yol 3 — Tüneller: internet size ulaşacaksa

ngrok http 3000 veya cloudflared tunnel --url http://localhost:3000 size laptop'a yönlenen public bir HTTPS URL verir. Webhook almanın aracı budur: Stripe, GitHub ya da Twilio 192.168.1.42'yi çağıramaz — gerçek URL ister. Takası unutmayın: tünel açıkken o URL'yi bilen herkes ulaşabilir; geçici sayın, düzenli değiştirin.

Webhook'un iki yönü

Almak: tünel → public URL'yi sağlayıcının webhook ayarına yapıştır → istekleri sunucu loglarında izle. Göndermek / yeniden oynatmak: tünel gerekmez. Sağlayıcının örnek payload'ını alın, doğru Content-Type ve imza header'larıyla POST'u kurun, endpoint'inize atın — ReqPad'den bu, LAN IP'ye de Tailscale adresine de tünel URL'sine de aynı şekilde çalışır; istek geçmişe kaydedildiği için patlayan webhook'u trende, laptopsuz, tek dokunuşla yeniden oynatırsınız.

SSS

Telefonum localhost:3000'i neden açamıyor?

Çünkü localhost her zaman "bu cihaz" demektir. Telefonda localhost:3000, telefonun kendisini gösterir — orada dinleyen bir şey yok. Laptop'ın LAN IP'si (192.168.x.x), Tailscale adresi (100.x) veya bir tünel URL'si gerekir.

IP doğru ama hâlâ connection refused alıyorum. Neden?

İki klasik şüpheli: dev sunucusu yalnızca 127.0.0.1'i dinliyor (--host 0.0.0.0 ile başlatın) veya laptop güvenlik duvarı gelen bağlantıyı kesiyor. iOS'ta ayrıca ilk LAN isteğinde çıkan "Yerel Ağ" iznini kabul etmiş olmanız gerekir.

Webhook test etmek için public URL şart mı?

Sadece üçüncü taraf servislerden webhook ALMAK için: Stripe veya GitHub laptop'ınıza ulaşamaz; ngrok/cloudflared ile geçici public URL verirsiniz. Kendi endpoint'inize webhook payload'ı GÖNDERMEK/yeniden oynatmak içinse tünele gerek yok — sağlayıcının JSON gövdesi ve imza header'larıyla POST'u doğrudan atarsınız.

Tailscale mi ngrok mu?

Farklı işler. Tailscale cihazlarınıza özel bir ağ kurar: telefon, laptop'a her yerden ulaşır, hiçbir şey internete açılmaz — günlük geliştirme için ideal. Tüneller (ngrok, cloudflared) bir portu geçici olarak internete açar — dış servis size ulaşacaksa şarttır; bedeli, URL'yi bilen herkesin de ulaşabilmesidir.

192.168'e, 100.x'e, herhangi bir URL'ye.

ReqPad; LAN IP, Tailscale adresi ve tünel URL'lerine karşı test eder — altı protokol, gerçek auth, istek geçmişi. Başlamak ücretsiz.