Telefondan localhost ve webhook testi
Mobil API testinin en klasik kafa karışıklığı, çözülmüş hâliyle. · English version →
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.