CORS (Cross-Origin Resource Sharing) Ayarları
CORS Nedir?
Cross-Origin Resource Sharing (CORS), tarayıcının çapraz alan taleplerine olan kısıtlamalarını gevşetmek için kullanılan HTTP üst bilgelerine dayalı bir mekanizmadır. Basitcha, bir web sayfası (example.com
'da bulunan bir sayfa gibi) farklı bir alan (api.example.net
gibi) üzerindeki kaynaklara erişmek istediğinde, tarayıcı bu talebi varsayılan olarak engeller; bu, tarayıcının aynı kaynak politikasıdır. CORS, sunucunun yanıtında belirli üst bilgileri eklemesine izin vererek, tarayıcıya hangi kaynakların erişim izni olduğunu bildirmesine olanak tanır ve böylece güvenli bir şekilde çapraz alan erişimi sağlanır.
Neden CORS Kullanmalısınız?
Ön uç uygulamanız (app.example.com
üzerinde çalışan bir SPA gibi) arka uç API'sinden (api.example.com
üzerinde çalışan bir API gibi) veri alması gerektiğinde muhtemelen CORS kullanmanız gerekecektir.
CORS Parametrelerinin Ayrıntıları
İşte CORS içinde yaygın olarak kullanılan bazı parametreler ve işlevleri:
Access-Control-Allow-Origin
:- İşlevi: Kaynağa erişime izin verilen kaynakları belirtir.
- Değerleri:
*
: Herhangi bir alanın talebine izin verir (üretim ortamında kullanılmaması önerilir, çünkü güvensizdir).https://example.com
: Sadecehttps://example.com
'dan gelen taleplere izin verir.https://example.com https://www.example.net
: Yalnızcahttps://example.com
vehttps://www.example.net
'den gelen taleplere izin verir.
- Önemli Not: Talep
Authorization
üst bilgisine sahip olduğunda,Access-Control-Allow-Origin
*
olarak ayarlanamaz, belirli bir alan olarak ayarlanmalıdır; aksi halde çapraz alan isteği başarısız olacaktır.
Access-Control-Allow-Methods
:- İşlevi: İzin verilen HTTP yöntemlerini belirtir (GET, POST, PUT, DELETE gibi).
- Değerleri: Örneğin:
GET, POST, PUT, DELETE, OPTIONS
- Önemli Not: Eğer isteğiniz özel başlık içeriyorsa veya
PUT
ya daDELETE
yöntemini kullanıyorsa, buradaOPTIONS
yöntemini belirtmelisiniz; aksi takdirde, tarayıcı öncelikle birOPTIONS
ön kontrol isteği gönderir. Eğer ön kontrol isteğinin yanıtındaOPTIONS
yönteminin izin verildiğine dair bir bildirim yoksa, isteğiniz başarısız olacaktır.
Access-Control-Allow-Headers
:- İşlevi: İstemcinin talepte kullanabileceği özel HTTP başlıklarını belirtir.
- Değerleri: Örneğin:
Content-Type, Authorization
- Önemli Not: Eğer talebinizde özel başlık varsa, bunların kullanılmasına izin vermeniz gerekmektedir; aksi takdirde tarayıcı isteğinizi engeller.
Access-Control-Allow-Credentials
:- İşlevi: Çapraz alan taleplerinin çerez veya HTTP kimlik bilgileri ile taşınıp taşınamayacağını belirtir.
- Değerleri:
true
veyafalse
. - Önemli Not:
true
olarak ayarlandığında,Access-Control-Allow-Origin
değerinin joker karakter*
olmaması gerektiği önemlidir.
ServBay'de CORS'u Etkinleştirme ve Yapılandırma
ServBay, web sitenizin CORS ayarlarını yapılandırmak için kolay bir arayüz sunmaktadır, adımlar aşağıdaki gibidir:
- Web Sitesini Seçin: ServBay ana arayüzünün sol tarafındaki gezinme çubuğunda “Web Sitesi” seçeneğine tıklayın. CORS'u yapılandırmak istediğiniz web sitesini listeden seçin.
- CORS Yapılandırmasına Girin: Web sitesi yapılandırma sayfasında “CORS” bölümünü bulun. ServBay, varsayılan olarak CORS'u kapalı tutar, CORS'u manuel olarak etkinleştirmeniz gerekmektedir; kaydırıcıyı “kapalı” durumundan “açık” durumuna geçirin.
Access-Control-Allow-Origin
Yapılandırması:Access-Control-Allow-Origin giriş kutusuna, erişime izin verilen alan adlarını girin, birden fazla alan adı için boşlukla ayırabilirsiniz. Örneğin:https://servbay.new https://www.servbay.com https://www.servbay.dev https://www.servbay.cn https://appleid.apple.com
.Access-Control-Allow-Methods
Yapılandırması:Access-Control-Allow-Methods giriş kutusuna, izin vermek istediğiniz HTTP istek yöntemlerini girin. Örneğin:GET, POST, PUT, DELETE, OPTIONS
.Access-Control-Allow-Headers
Yapılandırması:Access-Control-Allow-Headers giriş kutusuna, izin vermek istediğiniz başlıkları girin. Örneğin:Content-Type, Authorization
.Allow-Credentials
(isteğe bağlı) Etkinleştirme: Eğer çapraz alan taleplerinin çerez veya kimlik bilgileri taşımasına izin vermek istiyorsanız, Allow-Credentials kaydırıcı butonunu etkinleştiriniz. Bu seçeneği etkinleştirdiğinizde,Access-Control-Allow-Origin
değerinin joker karakter*
olarak ayarlanamayacağını unutmayın.- Ayarları Kaydetme: Yapılandırmayı tamamladıktan sonra, değişikliklerinizi uygulamak için sağ alt köşedeki "Kaydet" butonuna tıklayın.
Örnek
Yukarıdaki ekran görüntüsüne göre, “ServBay Testing” web sitesinde yapılandırılan CORS şu şekildedir:
Access-Control-Allow-Origin
:https://servbay.new https://www.servbay.com https://www.servbay.dev https://www.servbay.cn https://appleid.apple.com
Access-Control-Allow-Methods
:GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers
:Content-Type, Authorization
Allow-Credentials
: Etkin.
Bu, yukarıdaki alan adlarından gelen taleplerin servbay.new
web sitesinin kaynaklarına erişebileceği ve GET, POST, PUT, DELETE, OPTIONS
yöntemlerini kullanarak talep gönderebileceği ve ayrıca Content-Type
ve Authorization
başlıkları ile çerez bilgilerini taşıyabileceği anlamına gelir.
Dikkat Edilmesi Gerekenler
- Güvenlik: Üretim ortamında,
Access-Control-Allow-Origin
değeri olarak joker karakter*
kullanmaktan kaçının. - Önbellek: Tarayıcılar CORS yanıtlarını önbelleğe alabilir, bu nedenle CORS ayarlarını değiştirdikten sonra tarayıcı önbelleğini temizlemeniz gerekebilir.
- Kod Yapılandırması: Bazı durumlarda, CORS'u web sunucusunda yapılandırmanın yanı sıra, kodda (Laravel) da CORS'u yapılandırmanız gerekebilir.
- Karmaşık Senaryolar: Daha karmaşık çapraz alan senaryoları için, CORS ile diğer teknolojileri, örneğin JSONP veya proxy sunucularını birleştirmeniz gerekebilir.
Yukarıdaki adımlar aracılığıyla, ServBay'de web siteniz için CORS'u kolayca etkinleştirip yapılandırabilir ve çapraz alan taleplerinizin sorunsuz bir şekilde gerçekleşmesini sağlayabilirsiniz.
Umarım bu belge, ServBay'in CORS işlevini daha iyi anlamanıza ve kullanmanıza yardımcı olur. Herhangi bir sorunuz varsa, lütfen sormaktan çekinmeyin.