Online büyük bir alışverişi tamamlamak üzeresiniz. Kredi kartı bilgilerinizi doldurur, "Şimdi Öde" düğmesine tıklarsınız ve kısa bir an için tarayıcınız tüm hassas verilerinizle birlikte bir POST
isteği gönderir. Aniden, sunucu sizi 3D Secure kimlik doğrulama sayfasına yönlendirmesi gerekir. Ödeme bilgilerinizle birlikte gönderilen o orijinal POST
isteğine ne olur? Kaybolur mu? Yanlış mı gönderilir?
Bu kritik senaryo, HTTP yönlendirme kodları arasındaki ince farkların son derece önemli hale geldiği yerdir. Bu, en kesin ve değerli durum kodlarından birinin belirli görevidir: 307 Geçici Yönlendirme
.
Kuzeni 302 Bulundu
iyi bilinen bir "geçici yönlendirme" iken, 307
onun daha katı, daha güvenilir kardeşidir. Orijinal HTTP spesifikasyonundaki kritik bir belirsizliği çözmek için oluşturulmuştur; ödemeler ve form gönderimleri gibi hassas işlemlerin bir yönlendirme sırasında yanlış ele alınmamasını sağlar.
Bu, "Oraya git" gibi belirsiz bir talimat ile "Bana vereceğin her şeyi al ve bunun yerine o diğer kişiye ver" gibi kesin bir komut arasındaki farktır.
Özellikle ödemeleri, girişleri veya veri gönderimlerini yöneten API'lerle sağlam web uygulamaları geliştiren bir geliştiriciyseniz, 307
'yi anlamak çok önemlidir.
Ve teknik detaylara dalmadan önce, karmaşık yönlendirme akışları içeren API'ler geliştiriyorsanız veya test ediyorsanız, bu nüansları yönetebilecek bir araca ihtiyacınız var. Apidog'u ücretsiz indirin; farklı yönlendirme türlerini kolayca test etmenize, istek yöntemlerinin korunduğunu doğrulamanıza ve uygulamanızın kritik yollarının güvenli ve güvenilir olduğundan emin olmanıza olanak tanıyan hepsi bir arada bir API platformudur.
Şimdi, kolları sıvayalım ve durum kodu 307 Geçici Yönlendirme hakkında her şeyi keşfedelim.
Sorun: 302 Yönlendirmesinin Belirsizliği
307
'yi anlamak için, öncelikle düzeltmek üzere tasarlandığı hatayı anlamamız gerekir. Hikaye, orijinal geçici yönlendirme olan 302 Bulundu
ile başlar.
HTTP/1.0 spesifikasyonu 302
için belirsizdi. İstemcinin yönlendirmeyi gerçekleştirmesi gerektiğini belirtiyordu, ancak yönlendirilen isteğin orijinal istektekiyle aynı HTTP yöntemini (örneğin, POST
, PUT
) kullanıp kullanmaması gerektiğini açıkça söylemiyordu.
Bu bir soruna yol açtı: güvenlik nedenleriyle, çoğu tarayıcı satıcısı 302
'yi, yönlendirilen isteğin yöntemini GET olarak değiştirerek uyguladı. Bu, çoğu temel web taraması için mantıklıydı, ancak programatik veya API odaklı etkileşimler için felaketlere neden oldu.
Felaket Senaryosu:
- Bir istemci,
/submit-payment
adresine form verileriniPOST
eder. - Sunucu,
302 Bulundu
ve birLocation: /confirm
başlığıyla yanıt verir. - Tarayıcı,
/confirm
adresine bir GET isteği göndererek yönlendirmeyi takip eder. - Hassas
POST
verileri kaybolur.GET
bekleyen/confirm
uç noktası bir sayfa gösterebilir, ancak hangi ödemeyi onaylayacağını bilmez.
307
durum kodu, bu tehlikeli belirsizliği bir kez ve sonsuza dek ortadan kaldırmak için HTTP/1.1'de tanıtıldı.
HTTP 307 Geçici Yönlendirme Gerçekte Ne Anlama Geliyor?
307 Geçici Yönlendirme
durum kodu, açık ve net bir talimattır. Hedef kaynağın geçici olarak farklı bir URI altında bulunduğunu ve kullanıcı aracısının yönlendirilen isteği yaparken orijinal istekte kullanılan istek yöntemini DEĞİŞTİRMEMESİ gerektiğini belirtir.
Orijinal istek bir POST
ise, yönlendirilen istek de bir POST
olmalıdır. Eğer bir PUT
ise, bir PUT
olarak kalmalıdır. Yöntem ve gövde aynı olmalıdır.
Tipik bir 307
yanıtı şöyle görünür:
HTTP/1.1 307 Temporary RedirectLocation: <https://auth.example.com/3d-secureContent-Type:> text/htmlContent-Length: 125
<html><head><title>307 Temporary Redirect</title></head><body><center><h1>307 Temporary Redirect</h1></center></body></html>
Tüm yönlendirmelerde olduğu gibi anahtar, Location: <https://auth.example.com/3d-secure
> başlığıdır. Büyü, 307
durum kodunun anlamsal garantisinin kendisindedir.
HTTP'de Yönlendirmeler Neden Var?
Yönlendirmeler, sunucuların ve istemcilerin kaynak kullanılabilirliğindeki değişiklikleri kullanıcı deneyimini bozmadan iletişim kurmasına yardımcı olmak için vardır.
Bazı yaygın senaryolar şunları içerir:
- Web sitesi geçişleri →
http://
'denhttps://
'ye geçiş. - Geçici kesintiler → Sunucular bakımdayken trafiği yönlendirme.
- API sürümleme → İstemcileri daha yeni bir geçici uç noktaya gönderme.
Yönlendirmeler olmasaydı, kaynaklar her taşındığında kullanıcılar hata mesajlarına bakmak zorunda kalırdı.
307 ve 302: Kritik Fark
Bu en önemli ayrımdır. Fark, tamamen yöntem koruma ile ilgilidir.
Özellik | 302 Bulundu |
307 Geçici Yönlendirme |
---|---|---|
Orijinal Spesifikasyon | Yöntem değişikliği konusunda belirsiz. | Yöntem değişikliğini açıkça yasaklar. |
Tipik Tarayıcı Davranışı | POST'u GET'e çevirir. Bu kritik farktır. | Orijinal yöntemi korur (POST, POST olarak kalır). |
Güvenlik | Güvenli değil. İdempotent olmayan bir istekten (POST gibi) sonra kullanılmamalıdır. | Güvenli. Özellikle idempotent olmayan istekler için tasarlanmıştır. |
Analoji | "Gönderdiğiniz bilgiler alındı. Şimdi sonucu görmek için lütfen bu yeni sayfaya gidin." (Veriler teslim edildi). | "Lütfen aynı bilgi paketini bu yeni adrese tekrar gönderin." (Veriler yönlendirildi). |
Hangisini ne zaman kullanmalı?
- Bir POST işleminden sonra yönlendirme yapmak istediğinizde, ancak asıl veri gönderimi tamamlanmış ve yönlendirme sadece bir sonuç sayfasını göstermek içinse
302 Bulundu
kullanın. (Ancak303 See Other
bunun için genellikle daha da iyidir). - Orijinal isteğin (ve yöntemi/gövdesi) eylemi tamamlamak için farklı bir URI'ye yeniden gönderilmesi gerektiğinde
307 Geçici Yönlendirme
kullanın. Bu, kimlik doğrulama akışlarında, ödeme ağ geçitlerinde ve API zincirlerinde yaygındır.
307 Geçici Yönlendirme Nasıl Çalışır?
İşte basitleştirilmiş bir akış:
1. İstemci bir kaynak ister:
POST /checkout HTTP/1.1
Host: shop.example.com
2. Sunucu 307 Geçici Yönlendirme ile yanıt verir:
HTTP/1.1 307 Temporary Redirect
Location: <https://secure.example.com/checkout>
3. İstemci POST isteğini yeni konumda tekrarlar:
POST /checkout HTTP/1.1
Host: secure.example.com
Ana nokta: İstek yöntemi ve gövdesi korunur.
Gerçek Dünya Örneği: Ödeme Akışı
307
'nin iş başında olduğunu görmek için ödeme senaryosunu inceleyelim.
1. Orijinal POST: Kullanıcı ödeme formunu gönderir. Tarayıcı şunları gönderir:
POST /checkout/payment HTTP/1.1Host: shop.example.comContent-Type: application/x-www-form-urlencoded
card_number=4111...&expiry=12/25&cvc=123
2. Sunucunun 307 Yanıtı: Mağazanın sunucusu, bankanın 3D Secure sistemine devretmesi gerekir. Şöyle yanıt verir:
HTTP/1.1 307 Temporary RedirectLocation: <https://api.bank.com/3d-secure/authenticate>
3. Korunan POST: Tarayıcı 307
yanıtını alır. Spesifikasyon belirsiz olmadığı için, yeni konuma tamamen aynı POST isteğini tamamen aynı gövdeyle yeniden göndermesi gerektiğini bilir.
POST /3d-secure/authenticate HTTP/1.1Host: api.bank.comContent-Type: application/x-www-form-urlencoded
card_number=4111...&expiry=12/25&cvc=123
4. Nihai Sonuç: Bankanın API'si ödeme detaylarını doğrudan alır, kimlik doğrulamasını yapar ve ardından istemciye sonraki adımlarla (muhtemelen mağazanın onay sayfasına geri dönen bir 303
veya 302
yönlendirmesi) yanıt verir.
Bu akış, mağaza ile banka arasında hassas verilerin kaybolmamasını sağlar.
307'yi 301 veya 302'ye Karşı Ne Zaman Kullanmalısınız?
- 301 Kalıcı Olarak Taşındı → Kaynak konumu bir daha asla değişmeyecekse.
- 302 Bulundu → Kaynak geçici olarak başka bir yerdeyse, ancak yöntem koruma kritik değilse.
- 307 Geçici Yönlendirme → Kaynak geçici olarak başka bir yerdeyse ve HTTP yöntemini korumanız gerekiyorsa.
En iyi genel kural:
- Kalıcı değişiklikler için 301 kullanın.
- Hassas işlemler (POST istekleri gibi) içeren geçici taşınmalar için 307 kullanın.
307 Geçici Yönlendirme Kullanmanın Faydaları
- Öngörülebilirlik → İstek yöntemi her zaman korunur.
- Güvenlik → Yanlışlıkla yöntem düşürmelerini (örneğin, POST'un GET'e dönüşmesini) önler.
- Geliştirici netliği → İstemciler tam olarak ne tür bir davranış bekleyeceklerini bilirler.
Dezavantajlar ve Yaygın Yanlış Anlamalar
- Bazı eski istemciler 307'yi doğru şekilde işlemeyebilir.
- Geliştiriciler bazen 307'yi 302 ile karıştırarak istenmeyen davranışlara yol açabilir.
- SEO uzmanları bazen 307'yi 301'e eşdeğer olarak yanlış yorumlar – öyle değildir.
307 ve API Geliştirme
API dünyasında, 307 önemli bir rol oynar:
- İdempotent olmayan isteklerin (POST gibi) tutarlı kalmasını sağlar.
- API ağ geçitlerinin geçici değişiklikler sırasında trafiği güvenli bir şekilde yönlendirmesine yardımcı olur.
- Bakım pencerelerini yönetmek için güvenli bir yol sağlar.
307 olmadan, geliştiriciler istemcilerin istek türünü istemeden değiştirmesi riskini taşır.
Apidog ile 307 Yönlendirmelerini Test Etme

Bu davranışı test etmek çok önemlidir. API'ler geliştiriyorsanız veya test ediyorsanız, istemcinizin 307 yanıtlarını nasıl işlediğini görmek isteyeceksiniz. İstemcinizin yöntemi ve gövdeyi koruyarak 307
yanıtlarını doğru şekilde işlediğinden emin olmalısınız. Apidog bunun için mükemmel bir araçtır.
Apidog ile şunları yapabilirsiniz:
- Bir POST İsteği Oluşturun: Uç noktanıza bir JSON veya form-data gövdesi ile kolayca bir POST isteği ayarlayın.
- Bir 307 Yanıtı Taklit Edin: Apidog'da sunucu taklidinizi, bir
Location
başlığı ile307 Geçici Yönlendirme
döndürecek şekilde yapılandırın. - Otomatik Yönlendirmeyi Gözlemleyin: Apidog otomatik olarak yönlendirmeyi takip edecektir. Ana test, ikinci istek için istek günlüğünü kontrol etmektir. POST yöntemini korudu mu? Tamamen aynı gövdeyi gönderdi mi?
- 302 ile Karşılaştırın: Aynı testi çalıştırın, ancak taklidinizin bunun yerine bir
302
döndürmesini sağlayın. Apidog'un (standart bir tarayıcı gibi davranarak) yöntemi GET'e nasıl değiştirdiğini ve gövdeyi nasıl düşürdüğünü gözlemleyin. Bu görsel gösterim, farkı mükemmel bir şekilde açıklar. - API İstemcilerini Test Edin: Programatik bir API istemcisi (örneğin, Node.js, Python'da) geliştiriyorsanız, Apidog'u sunucuyu taklit etmek ve istemci kodunuzun yöntemi koruyarak
307
yanıtlarını doğru şekilde işlediğinden emin olmak için kullanabilirsiniz.
Bu test seviyesi, ödemeler ve girişler gibi kritik işlemlerin üretimde bozulmamasını sağlar. Apidog'u ücretsiz indirin ve bugün bir 307 yanıtını taklit etmeyi deneyin. Uygulamalarınızı gerçek dünya yönlendirme koşulları altında test etmek için harika bir yoldur.
307 Geçici Yönlendirmenin SEO Etkileri
Bir SEO perspektifinden:
- 307 arama motorlarına yönlendirmenin geçici olduğunu söyler.
- 301'den farklı olarak, arama motorları yeni URL'ye bağlantı değerini (PageRank) aktarmaz.
- Bu, A/B testi, promosyonlar veya kısa vadeli kampanyalar için mükemmeldir.
301 yerine 307 kullanırsanız, uzun vadeli SEO faydalarını kaybetme riskiyle karşı karşıya kalırsınız.
307 ve 308 Kalıcı Yönlendirme
Tıpkı 307
'nin 302
'nin katı karşılığı olması gibi, kalıcı taşınmalar için bir kardeşi vardır: 308 Kalıcı Yönlendirme
.
307 Geçici Yönlendirme
: "Aynı isteği geçici olarak bu diğer URL'ye yeniden gönderin."308 Kalıcı Yönlendirme
: "Aynı isteği kalıcı olarak bu diğer URL'ye yeniden gönderin. Kayıtlarınızı güncelleyin."
Geçici bakım, A/B testi veya hata toleransı senaryoları için 307
kullanın. GET dışı istekler bekleyen bir uç noktanın URL'sini kalıcı olarak değiştiriyorsanız 308
kullanın.
307 ile Güvenlik Hususları
Güvenlik açısından, 307 genellikle 302'den daha güvenlidir çünkü istek manipülasyonunu önler. Ancak, unutmayın:
- Kötü niyetli yönlendirmeler yine de kullanıcıları kimlik avı sitelerine yönlendirebilir.
- Düşürme saldırılarını önlemek için
Location
başlığında her zaman HTTPS kullanın.
Uygulama ve En İyi Uygulamalar
- Sunucu Geliştiricileri İçin: İdempotent olmayan bir isteği (POST, PUT, DELETE) geçici olarak yönlendirmeniz gerektiğinde
307
kullanın. Bu en güvenli ve anlamsal olarak en doğru seçimdir. - İstemci Geliştiricileri İçin: HTTP istemci kitaplığınızın (örneğin, Axios, Requests) orijinal isteği yeni konuma yeniden göndererek
307
yanıtlarını doğru şekilde işlediğinden emin olun. Çoğu modern kitaplık bunu doğru şekilde yapar. - Her Zaman Hassasiyeti Tercih Edin: Yöntemin korunması gerektiğinden eminseniz,
302
yerine307
kullanmayı tercih edin. Bu belirsizliği ortadan kaldırır.
307 Geçici Yönlendirmeye Alternatifler
Kullanım durumunuza bağlı olarak:
- Taşıma kalıcıysa ve yöntem korumaya ihtiyacınız varsa 308 Kalıcı Yönlendirme kullanın.
- Yöntem önemli değilse ve geriye dönük uyumluluk daha önemliyse 302 Bulundu kullanın.
- SEO'nun öncelikli olduğu kalıcı yer değiştirmeler için 301 Kalıcı Olarak Taşındı kullanın.
Sonuç: Güvenlik Garantisi
HTTP 307 Geçici Yönlendirme
durum kodu, web'in daha fazla hassasiyet ve güvenliğe doğru evriminin bir kanıtıdır. Protokoldeki, veri kaybına ve güvenlik açıklarına yol açabilecek kritik bir belirsizliği çözmüştür.
307 Geçici Yönlendirme durum kodu, HTTP spesifikasyonundaki başka bir sayıdan daha fazlasıdır. İstek yöntemlerinin ve gövdelerinin yönlendirmeler sırasında bozulmadan kalmasını sağlayarak gerçek dünya sorunlarını çözer.
302
ve 303
'ün yerleri olsa da, 307
kritik bir garanti sağlar: bir isteğin, hedefi geçici olarak değişse bile, tam olarak amaçlandığı gibi teslim edileceğini. Bu, hassas işlemleri yöneten güvenilir, güvenli web uygulamaları oluşturmak için onu vazgeçilmez kılar.
Bu yönlendirme kodları arasındaki incelikli farkları anlamak, kıdemli bir geliştiricinin işaretidir. Ve uygulamalarınızın bu yönlendirmeleri doğru şekilde işlediğini test etme ve doğrulama zamanı geldiğinde, Apidog gibi güçlü bir araç, yönlendirmelerinizin sadece çalışmasını değil, kesinlikle çalışmasını sağlamak için gereken görünürlüğü ve kontrolü sağlar.