CORS Test Aracı

Herhangi bir URL için Cross-Origin Resource Sharing (CORS) başlıklarını test edin ve teşhis edin

Gelişmiş Seçenekler

Test için Örnek URL'ler

CORS'u Anlamak

CORS Nedir?

Cross-Origin Resource Sharing (CORS), bir kaynaktaki web sayfasının farklı bir kaynaktan kaynak talep etmesine olanak tanıyan bir güvenlik mekanizmasıdır. CORS olmadan tarayıcılar, güvenlik açıklarını önlemek için bu tür kaynaklar arası istekleri varsayılan olarak engeller.

CORS Nasıl Çalışır

Bir tarayıcı kaynaklar arası bir istek yaptığında, bir Origin başlığı gönderir. Sunucu, uygun Access-Control-Allow-Origin başlığı ile yanıt vermelidir. Basit olmayan istekler için tarayıcı, asıl isteğin izinli olup olmadığını kontrol etmek üzere önce bir OPTIONS preflight isteği gönderir.

Önemli CORS Başlıkları

Access-Control-Allow-Origin izin verilen kaynakları belirtir. Access-Control-Allow-Methods izin verilen HTTP yöntemlerini listeler. Access-Control-Allow-Headers izin verilen istek başlıklarını tanımlar. Access-Control-Allow-Credentials çerezlerin izinli olup olmadığını belirtir.

CORS Hatalarını Ayıklama

CORS hataları, bir kaynaklar arası istek engellendiğinde tarayıcı konsolunda görünür. Sunucunun doğru CORS başlıklarını içerdiğinden emin olun. API'ler için sunucunun, kaynağınıza, gerekli yöntemlere ve gönderdiğiniz tüm özel başlıklara izin verdiğinden emin olun.

CORS Test Aracı

Herhangi bir URL için Cross-Origin Resource Sharing (CORS) başlıklarını test edin ve teşhis edin

Özellikler

  • Send real HTTP requests to a target URL and inspect CORS-related headers in the response
  • Reports Access-Control-Allow-Origin, Allow-Methods, Allow-Headers, Allow-Credentials, Max-Age
  • Tests preflight (OPTIONS) and actual-request behaviour
  • Runs in your browser — your request is sent FROM your origin, so the result reflects what your real app would see
  • Useful for debugging CORS-blocked production fetches

Nasıl Kullanılır

  1. Test etmek istediğiniz URL'yi giriş alanına girin veya hızlı test için sağlanan örnek URL'lerden birini seçin.
  2. HTTP yöntemini seçin (GET, POST vb.) ve isteğe bağlı olarak gelişmiş seçenekler bölümünden özel başlıklar ekleyin.
  3. Kaynaklar arası bir istek göndermek ve tüm CORS başlıkları ile değerleri dahil ayrıntılı sonuçları görüntülemek için 'CORS Test Et' düğmesine tıklayın.

İpuçları ve En İyi Uygulamalar

  • Each test sends a real HTTPS request to the target URL — the URL and your IP are visible to the target server.
  • CORS is enforced by the browser, not the server. The server sends headers; the browser decides whether to expose the response to JS.
  • For wildcard ACAO (`Access-Control-Allow-Origin: *`), the request will succeed but credentials (cookies) won't be sent — that's the spec.
  • Preflight (OPTIONS) is sent only for non-simple requests (custom headers, non-GET/POST methods, JSON body in some cases).
  • If the test fails, check the browser devtools Network tab — the actual error message is more detailed than this tool can surface.

SSS

CORS nedir ve web geliştiricileri için neden önemlidir?

CORS (Cross-Origin Resource Sharing), hangi web sayfalarının sayfayı sunan etki alanından farklı bir etki alanına istek yapabileceğini kontrol eden bir tarayıcı güvenlik özelliğidir. Modern web uygulamaları sıklıkla farklı etki alanlarındaki API'leri çağırmaya ihtiyaç duyduğundan ve uygun bir CORS yapılandırması olmadan bu istekler tarayıcı tarafından engelleneceğinden önemlidir. CORS'u anlamak, üçüncü taraf API'ler veya mikro hizmetlerle etkileşime giren uygulamalar geliştirmek için esastır.

API Postman veya curl'de çalışmasına rağmen neden bir CORS hatası alıyorum?

CORS, sunucu tarafı bir kısıtlama değil, tarayıcı tarafından uygulanan bir güvenlik politikasıdır. Postman ve curl gibi araçlar, tarayıcı olmadıkları ve aynı kaynak politikasını uygulamadıkları için CORS'u tamamen atlar. Tarayıcı, sunucunun yanıtındaki CORS başlıklarını özellikle kontrol eder ve eksik veya yanlışlarsa isteği engeller. Bu nedenle bir API Postman'de mükemmel çalışabilir ancak bir tarayıcı uygulamasında başarısız olabilir.

Preflight isteği nedir ve tarayıcı bunu ne zaman gönderir?

Preflight isteği, tarayıcının asıl istekten önce sunucunun kaynaklar arası isteğe izin verip vermediğini kontrol etmek için otomatik olarak gönderdiği bir OPTIONS isteğidir. Tarayıcı; GET, HEAD veya POST dışındaki yöntemleri kullanan, özel başlıklar içeren veya application/x-www-form-urlencoded, multipart/form-data ya da text/plain dışında Content-Type değerleri kullanan istekler için preflight gönderir. Sunucu, asıl isteğin devam edebilmesi için uygun CORS başlıkları ile yanıt vermelidir.

Access-Control-Allow-Origin: * ne anlama gelir ve güvenli midir?

Joker karakter değeri *, sunucunun herhangi bir kaynaktan gelen isteklere izin verdiği anlamına gelir. Genel API'ler için kullanışlı olsa da hassas verileri işleyen özel API'ler için bir güvenlik riski olabilir. * kullanılırken sunucu, Access-Control-Allow-Credentials'ı da true olarak ayarlayamaz. Kimlik doğrulama gerektiren API'ler için joker karakteri kullanmak yerine tam olarak izin verilen kaynakları belirtmelisiniz.

Sunucumdaki CORS hatalarını nasıl düzeltebilirim?

CORS hatalarını düzeltmek için sunucunuzu, yanıtlarına uygun CORS başlıklarını içerecek şekilde yapılandırmanız gerekir. En azından joker karakter (*) veya istekte bulunan belirli kaynak ile birlikte Access-Control-Allow-Origin ekleyin. Basit olmayan istekler için ayrıca Access-Control-Allow-Methods ve Access-Control-Allow-Headers ekleyin. Çoğu web çerçevesi bu yapılandırmayı basitleştiren CORS ara yazılım paketlerine sahiptir; örneğin Express.js için cors, Django için django-cors-headers veya Ruby on Rails için rack-cors.

Bu araç gerçekten gerçek kaynaklar arası istekler yapıyor mu?

Evet, bu araç tarayıcınızdan belirttiğiniz URL'ye gerçek fetch istekleri yapar; yani tarayıcının CORS politikası tam olarak uygulanır. Hedef sunucu CORS başlıkları içermiyorsa tarayıcı yanıtı engeller ve araç CORS engellendi durumunu gösterir. Bu, tarayıcı uygulamanızın aynı isteği yaparken nasıl davranacağına dair doğru bir resim sunar.