Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

CORS Origin başlığı nedir?​


Origin, isteğin hangi kaynak bağlamından başlatıldığını bildiren HTTP istek başlığıdır. Normal bir web kaynağı için şema, ana makine ve gerekiyorsa port içerir; sayfanın yolu, sorgu parametreleri veya kullanıcı bilgisi bu değere girmez. Tarayıcı CORS işlemlerinde bu bilgiyi sunucuya iletir; sunucu izin verdiği kaynağı ayrı bir yanıt başlığı olan Access-Control-Allow-Origin ile bildirir.

Örneğin https://app.example.com/hesap?sekme=profil sayfasından başlayan uygun bir istekte kaynak bilgisi şöyle görünür:

Kod:
Origin: https://app.example.com

Bu değer istek hedefi değildir. İstek api.example.com adresine giderken Origin yine çağrıyı başlatan uygulamanın kaynağını gösterebilir. Bu nedenle Origin’i API adresiyle doldurmaya çalışmak doğru bir teşhis yöntemi değildir.

Şema, port ve yol nasıl değerlendirilir?​


http://app.example.com ile https://app.example.com farklı kaynaklardır. Aynı şema ve ana makinede standart dışı port değişmesi de farklı kaynak oluşturur. Buna karşılık /profil ve /ayarlar yolları tek başına kaynağı değiştirmez.

Varsayılan port kaynak serileştirmesinde genellikle yazılmaz. Örneğin HTTPS’nin varsayılan portunu kullanırken tarayıcıdan gelen gerçek değeri okuyun; yapılandırmaya gereksiz yol veya sondaki eğik çizgi eklemeyin. İzin listesi, tarayıcının gönderdiği kaynak kimliğini karşılamalıdır.

BaşlıkNeyi bildirir?Yol içerir mi?
OriginÇağrıyı başlatan kaynak bağlamınıHayır
HostHTTP isteğinin yöneldiği ana makineyi ve gerekirse portuHayır
RefererPolitikanın izin verdiği ölçüde önceki sayfa adresiniİçerebilir
Access-Control-Allow-OriginYanıtı okuyabilecek kaynağı; sunucu üretirHayır

Origin veya Referer değerinin görünmesi kullanıcı kimliğini kanıtlamaz. Tarayıcı dışı bir istemci kendi HTTP başlığını üretebilir; sunucu bu değeri parola ya da erişim token’ı yerine kullanmamalıdır.

Origin hangi isteklerde gönderilir?​


Tarayıcılar başlığı genel olarak çapraz kaynak isteklerinde ve aynı kaynağa yapılan POST gibi bazı isteklerde ekler. Buna karşılık her HTTP isteğinde bulunacağı varsayılamaz. Örneğin aynı kaynaklı GET/HEAD işlemlerinde veya bazı no-cors isteklerinde gönderilmeyebilir. İstek modu, yönlendirme ve kaynak bağlamı sonucu etkiler.

Preflight gerekiyorsa OPTIONS isteği de Origin taşır; ayrıca denenmek istenen yöntemi ve uygun olduğunda özel başlıkları bildirir. Origin, ön kontrolün kendisi veya izin verilen yöntemlerin listesi değildir. Asıl istek ve ön kontrol kayıtlarını ayrı inceleyin.

Origin: null ne anlama gelir?​


null, başlığın yokluğuyla aynı şey değildir. Tarayıcı opak veya gizlilik açısından hassas bir kaynak bağlamını bu değerle gösterebilir. Örneğin allow-same-origin yetkisi olmayan sandbox iframe veya bazı yerel dosya bağlamları bu sonuca yol açabilir.

Kod:
Origin: null

Bunu doğrudan belirli bir güvenilir siteye eşitlemeyin. Farklı ve ilgisiz bağlamlar aynı null değerini üretebilir. Geliştirme dosyasını çift tıklamak yerine bir yerel HTTP sunucusunda açmak, normal bir kaynakla test etmeyi sağlar; bütün null kaynaklara izin vermek genel çözüm değildir.

Başlığı doğru incelemek için​


  1. Tarayıcı geliştirici araçlarında Network bölümünde ilgili isteği seçin ve Request Headers altındaki gerçek Origin değerini okuyun.
  2. İsteğin hedef URL’sini, yöntemini ve modunu not edin. Başlık yoksa hemen sunucu hatası sonucuna varmayın; o istek türünde beklenip beklenmediğini değerlendirin.
  3. Preflight varsa onun ve asıl yanıtın Access-Control-Allow-Origin değerini ayrı kontrol edin.
  4. Birden fazla izinli kaynağa göre farklı yanıt üretiliyorsa sunucunun izin listesi kontrolünü ve uygun önbellek ayrımını inceleyin; HTTP önbellekleri için Vary: Origin önemlidir.
  5. Şema veya portu değiştirerek yeniden test edin. Hangi değişikliğin farklı kaynak oluşturduğunu gerçek ağ kaydından doğrulayın.

Sık sorulan sorular​


Fetch içinde Origin başlığını istediğim gibi ayarlayabilir miyim?​


Normal tarayıcı JavaScript’inde Origin, tarayıcının kontrolündeki yasaklı istek başlıklarındandır. Sunucunun izin sorununu headers nesnesine başka bir Origin yazarak çözemezsiniz.

Origin yoksa isteği güvenilir sayabilir miyim?​


Hayır. Başlığın bulunmaması yalnızca o isteğin bağlamıyla ilgilidir. Erişim kararı için uygulamanın kendi kimlik doğrulama, yetkilendirme ve gerekiyorsa CSRF denetimi kullanılmalıdır.

Origin siteyi kimin işlettiğini gösterir mi?​


Hayır. Başlık bir web kaynağını ifade eder; alan adı sahibi, oturum açan kullanıcı veya uygulamanın gerçek sahibi hakkında tek başına kanıt değildir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic