COMPUTER ENGINEER

Örneklere git
Blog
HTTP / HTTPS / TLS6 dk çalışma
62/ 70

Canlı akışlar ve webhook

Webhook, imza ve tekrar teslim

Server-to-server bildirimleri de tekrar gelebilir.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Webhook, bir servisin olay olduğunda başka servise HTTP isteği göndermesidir. Browser CORS burada erişim duvarı değildir. Receiver gönderici kimliğini ve payload bütünlüğünü sağlayıcının belgelenmiş signature mekanizmasıyla doğrulamalıdır. Raw body üzerinde imza gerekiyorsa önce JSON parse edip yeniden serialize etmek doğrulamayı bozabilir.

Timestamp ve replay penceresi, teslim kimliği ve idempotent işleme tasarlanır. Aynı event tekrar gelebilir; “her POST yeni işlem” varsayımı duplicate yaratır. Kısa sürede güvenli kabul + durable queue ve arka plan işleme gerekebilir; başarı yanıtı vermeden olayı kaybetmeyecek şekilde sakla.

Sadece kaynak IP’ye güvenmek veya secret query parametresi taşımak güçlü bir genel çözüm değildir. Provider’ın retry ve sıra garantisini oku. Sıradışı olay sırası ve geç teslimi business modeliyle uzlaştır. Örnek imza alan adları provider’a özel olabilir; kendi formatını evrensel standart sanma.

NERESİNDE KULLANIRSIN?

Ödeme, CI ve dış servis bildirimlerini güvenli işlemek için.

SIK YAPILAN HATA

Webhook event’inin sadece bir kez geleceğini varsaymak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

HTTP / temsili örnek
POST /hooks/provider HTTP/1.1
Host: example.test
Content-Type: application/json

Receiver normal HTTP endpoint’tir.

Bu sayfa dış sunuculara istek göndermez. HTTP mesajları temsili, HTTP/1.1 biçiminde okunabilir gösterimlerdir; HTTP/2 ve HTTP/3 wire formatı değildir. example.test ayrılmış öğretim alan adıdır. Komut ve JavaScript örneklerini yalnız kendi test ortamında uygula; gerçek token veya cookie yayımlama.

02 / SIRA SENDE

Önce kendin dene.

Aynı event yeniden geldiyse tekrar ödeme kaydı oluşturmalı mısın?

Çözümü ve açıklamasını göster
Açıklamalı çözüm
Same event → one logical business effect

Hayır; durable dedup ve business idempotency gerekir.