ESC

CORS Başlık Oluştürücu

Access-Control-Allow-Origin
Access-Control-Allow-Methods
Access-Control-Allow-Headers
Access-Control-Expose-Headers
Access-Control-Max-Age
saniye
Access-Control-Allow-Credentials
Joker karakter (*) kaynağıyla kullanılamaz

Oluştürülan Çıktı

CORS başlıkları oluşturmak için seçenekleri yapılandırın...
CORS başlıkları oluşturmak için seçenekleri yapılandırın...
CORS başlıkları oluşturmak için seçenekleri yapılandırın...
CORS başlıkları oluşturmak için seçenekleri yapılandırın...
CORS başlıkları oluşturmak için seçenekleri yapılandırın...
Tüm işlemler tarayıcınızda gerçekleşir. Hiçbir veri sunucuya gönderilmez.

Kullanım Örnekleri

Açık Genel API

Herhangi bir kaynağın GET ve POST istekleri yapmasına izin verin. Herhangi bir web sitesine veri sunan genel API'ler için idealdir.

Kimlik Doğrulamalı Dahili Uygulama

Kimlik bilgisi desteğiyle erişimi belirli kaynaklarla sınırlayın. Kimlik doğrulamalı dahili uygulamalar için mükemmeldir.

Salt Okunur API

Herhangi bir kaynaktan GET isteklerine izin veren ve sayfalama başlıklarını açığa çıkaran salt okunur API yapılandırması.

Özellikler

Tam Yapılandırma

Kaynak, yöntemler, başlıklar, kimlik bilgileri ve max-age dahil tüm CORS başlıklarını yapılandırın

Çoklu Sunucu Desteği

Nginx, Apache, Node.js/Express ve PHP için kullanıma hazır yapılandırma parçacıkları alın

Özel Kaynaklar ve Başlıklar

Kolay etiket tabanlı arayüzle birden fazla özel kaynak ve başlık ekleyin

Gizlilik Öncelikli

Tüm işlemler tarayıcınızda yerel olarak gerçekleşir, sunucuya veri gönderilmez

Nasıl Kullanılır?

1

Ayarları Yapılandırın

İzin verilen kaynaklar, HTTP yöntemleri, başlıklar, max-age ve kimlik bilgisi seçeneklerini ayarlayın.

2

Çıktı Formatını Seçin

HTTP başlıkları, Nginx, Apache, Node.js veya PHP çıktı formatları arasında geçiş yapın.

3

Kopyalayın ve Dağıtın

Oluştürülan yapılandırmayı kopyalayın ve sunucu kurulumunuza ekleyin.

Sık Sorulan Sorular

CORS (Cross-Origin Resource Sharing), bir origin'deki JavaScript'in, sunucu açıkça izin vermedikçe farklı bir origin'e istek yapmasını engelleyen bir tarayıcı güvenlik mekanizmasıdır. CORS olmadan, kötü niyetli bir sayfa oturum açık bir oturumu kullanarak diğer servislere istek gönderebilir. Sunucudaki CORS başlıkları tarayıcıya "bu origin güvenilir" mesajını verir.

CORS spesifikasyonu, Access-Control-Allow-Origin: * ile Access-Control-Allow-Credentials: true kombinasyonunu açıkça yasaklar. Kimlik bilgileri (çerezler, Authorization başlıkları) söz konusu olduğunda, sunucu joker karakter değil tam olarak isteği yapan origin'i döndürmelidir. Bu, herhangi bir web sitesinin oturum açmış bir kullanıcının kimlik bilgilerini kullanarak kimlik doğrulamalı API çağrıları yapmasını önler.

Basit olmayan her istekten önce bir preflight OPTIONS isteği gönderilir. Basit istekler, yalnızca standart başlıklarla GET veya POST kullanır. Basit olmayan istekler şunları içerir: PUT, DELETE, PATCH metotları; özel başlıklar (Authorization, X-API-Key gibi); application/json Content-Type. Sunucunuzun OPTIONS isteklerine uygun Allow-* başlıklarıyla yanıt vermesi gerekir.

Max-Age, tarayıcıya preflight yanıtını kaç saniye önbelleğe alacağını söyler. Yaygın bir değer 86400'dür (24 saat). Bu, production'da preflight gidiş-dönüşlerini azaltır. Önbellekleme sorunlarını önlemek için geliştirme sırasında 0 olarak ayarlayın.

Varsayılan olarak JavaScript, yalnızca sınırlı sayıda "güvenli" yanıt başlığını okuyabilir. API'niz X-Total-Count veya X-Request-Id gibi özel başlıklar döndürüyorsa, bunları Access-Control-Expose-Headers'da listelemeniz gerekir. Aksi takdirde, JavaScript bu başlıkları HTTP yanıtında mevcut olmalarına rağmen undefined olarak görecektir.

"Belirli Kaynaklar"ı seçin ve her güvenilir origin'i ayrı ayrı ekleyin (ör. https://app.example.com). CORS spesifikasyonu tek bir başlıkta birden fazla değeri desteklemez. Birden fazla origin için sunucunuzun istek Origin başlığını dinamik olarak bir izin listesiyle karşılaştırması ve eşleşeni geri döndürmesi gerekir. Oluşturulan Nginx/Apache/Node.js yapılandırmaları bu mantığı içerir.

HTTP Başlıkları (ham başlık değerleri), Nginx (add_header direktifleri), Apache (.htaccess ile Header set direktifleri), Node.js/Express (cors paketi veya manuel res.setHeader çağrıları) ve PHP (header() fonksiyon çağrıları). Her formatı görmek için sekmeler arasında geçiş yapın.

Hayır. Her şey tarayıcınızda çalışır. Hiçbir şey sunucuya gönderilmez veya herhangi bir yerde saklanmaz.

CORS Nedir ve Neden Var?

CORS (Cross-Origin Resource Sharing) hangi domainlerin API'nize istek yapabileceğini kontrol eden bir tarayıcı güvenlik mekanizması. Varsayılan olarak tarayıcılar cross-origin istekleri engeller - example.com'daki bir script api.otherdomain.com'u çağıramaz. CORS başlıkları tarayıcıya "sorun yok, bu origin'e güveniyorum" der. Doğru CORS yapılandırması olmadan frontend'iniz meşhur "blocked by CORS policy" hatalarını alır.

CORS Yapılandırması Neden Kafa Karıştırıcı?

CORS'un birden fazla başlığı var ve bunlar sezgisel olmayan şekillerde etkileşiyor. Allow-Origin belirli domain veya * olabilir ama kimlik bilgileriyle ikisi birden olmaz. Allow-Methods ve Allow-Headers istemcinin preflight'ta gönderdiğiyle eşleşmeli. Max-Age preflight sonuçlarının ne kadar önbelleğe alınacağını kontrol eder. Bunlardan birini kaçırsan API çağrıların şifreli hatalarla başarısız olur.

Yaygın CORS Hataları

Bir numara hata: kimlik bilgilerini de aktifken Allow-Origin'i * yapmak - tarayıcı bunu reddeder. İkincisi: sunucuda OPTIONS preflight isteklerini yönetmeyi unutmak, PUT/DELETE/PATCH başarısız olur. Üçüncüsü: özel yanıt başlıklarını Expose-Headers ile açığa çıkarmamak, JavaScript'e görünmez olurlar.

Preflight İstekleri Açıklaması

"Karmaşık" bir istek göndermeden önce (basit GET/POST'un ötesinde her şey), tarayıcı "buna izin veriliyor mu?" diye soran bir OPTIONS isteği gönderir. Sunucu uygun Allow-* başlıklarıyla yanıt vermeli. Vermezse gerçek istek asla ateşlenmez. Max-Age başlığı tarayıcıya bu preflight yanıtını ne kadar süre önbelleğe alacağını söyler.

Gizlilik

CORS yapılandırman asla tarayıcından çıkmıyor. Sunucu çağrısı yok, depolama yok, takip yok.

Güvenlik ve Gizlilik

Verilerinizin güvenliği bizim önceliğimiz

Yerel İşleme

Tüm işlemler tarayıcınızda gerçekleşir

Veri Transferi Yok

Verileriniz sunucularımıza gönderilmez

Veri Depolama Yok

Hiçbir veri depolanmaz veya paylaşılmaz

SSL Şifreleme

Güvenli bağlantı için SSL şifreleme

MoreOnlineTools'ta Daha Fazlası