Jegand
Kayıtlı Üye
- Katılım
- 22 Şubat 2021
- Mesajlar
- 41
- Tepkime puanı
- 77
- İlgi Alanlarınız
- Web Uygulama Güvenliği
- Cinsiyet
-
- Erkek
CORS nedir?
Cross-Origin Resource Sharing (Kökenler arası kaynak paylaşımı) anlamına gelen CORS, web tarayıcısı tarafından yönetilen ve ek HTTP başlıkları kullanılarak, bir kökende çalışan web uygulamasının, farklı bir kökende yer alan web uygulamasına erişim izni kontrolünü sağlayan mekanizmadır. Web uygulaması, internet tarayıcısı üzerinden farklı bir kökene (protokol, domain ve port) herhangi bir istek gönderirse cross-origin HTTP isteği oluşturmuş olur.
Örneğin, http://domain-a.com üzerinde yer alan bir web uygulamasının JavaScript tarafından ajax isteği göndererek, http://domain-b.com‘a erişmesi bir cross origin isteğidir.
Not: Eğer frontend (browser) tarafından değil de backend tarafından (Örneğin C# koduyla) domain-b.com’a erişseydi bu bir cross origin istek olmayacaktı.
CORS nasıl çalışır?
CORS’u açıklamak için öncelikle prefilight’ı (önceden kontrol için yapılan HTTP isteğini) tetiklemeyen ve tetikleyen istekler anlamına gelen simple requests (basit istekler) ve preflighted requests (önceden kontrollü istekler) terimlerini açıklamamız gerekiyor.
Basit istekler
Bu istek türü preflight isteğini tetiklemez ve tek bir HTTP isteği halinde gönderilir. Aşağıdaki özelliklerden herhangi birine sahip olması yeterlidir:
Örneğin test-cors.org üzerinden jsonplaceholder‘a bir istek gönderirsek, tarayıcı tarafından Origin header’ına test-cors URL’inin otomatik olarak atandığını görebiliriz:
GET /posts HTTP/1.1
Host: https://jsonplaceholder.typicode.com
Origin: https://www.test-cors.org
...
CORS ayarlaması yapılmış sunucu Origin header’ını kontrol eder. Eğer ilgili origin izni var ise Access-Control-Allow-Origin header’ına ilgili origini atar ve aşağıdaki gibi bir response döndürür:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://www.test-cors.org
...
Cross-Origin Resource Sharing (Kökenler arası kaynak paylaşımı) anlamına gelen CORS, web tarayıcısı tarafından yönetilen ve ek HTTP başlıkları kullanılarak, bir kökende çalışan web uygulamasının, farklı bir kökende yer alan web uygulamasına erişim izni kontrolünü sağlayan mekanizmadır. Web uygulaması, internet tarayıcısı üzerinden farklı bir kökene (protokol, domain ve port) herhangi bir istek gönderirse cross-origin HTTP isteği oluşturmuş olur.
Örneğin, http://domain-a.com üzerinde yer alan bir web uygulamasının JavaScript tarafından ajax isteği göndererek, http://domain-b.com‘a erişmesi bir cross origin isteğidir.
Not: Eğer frontend (browser) tarafından değil de backend tarafından (Örneğin C# koduyla) domain-b.com’a erişseydi bu bir cross origin istek olmayacaktı.
CORS nasıl çalışır?
CORS’u açıklamak için öncelikle prefilight’ı (önceden kontrol için yapılan HTTP isteğini) tetiklemeyen ve tetikleyen istekler anlamına gelen simple requests (basit istekler) ve preflighted requests (önceden kontrollü istekler) terimlerini açıklamamız gerekiyor.
Basit istekler
Bu istek türü preflight isteğini tetiklemez ve tek bir HTTP isteği halinde gönderilir. Aşağıdaki özelliklerden herhangi birine sahip olması yeterlidir:
- GET, HEAD ve POST metodu kullanırlar,
- Fetch Spec’inde yasaklı başlıklar bölümününharicindeki HTTP başlıklarına sahiptirler:
- Accept
- Accept-Language
- Content-Language
- Content-Type (bazı değerler haricinde)
- DPR
- Downlink
- Save-Data
- Viewport-Width
- Width
- Content-Type başlığı için izin verilen değerler:
- application/x-www-form-urlencoded
- multipart/form-data
- text/plain
Örneğin test-cors.org üzerinden jsonplaceholder‘a bir istek gönderirsek, tarayıcı tarafından Origin header’ına test-cors URL’inin otomatik olarak atandığını görebiliriz:
GET /posts HTTP/1.1
Host: https://jsonplaceholder.typicode.com
Origin: https://www.test-cors.org
...
CORS ayarlaması yapılmış sunucu Origin header’ını kontrol eder. Eğer ilgili origin izni var ise Access-Control-Allow-Origin header’ına ilgili origini atar ve aşağıdaki gibi bir response döndürür:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://www.test-cors.org
...