nelmio/cors-bundle, Symfony uygulamalarına CORS (Cross-Origin Resource Sharing) başlık desteği ekleyen bir PHP paketidir. Bu paket, farklı kaynaklardan (origin) gelen tarayıcı tabanlı isteklerin Symfony uygulamanıza erişimini kontrol etmenizi sağlar. Özellikle API geliştirme süreçlerinde, ayrı domainlerde barınan frontend uygulamalarının (SPA, mobil uygulama vb.) API'nize güvenli bir şekilde erişebilmesi için CORS başlıklarının doğru yapılandırılması kritik öneme sahiptir. Paket, Packagist üzerinde 100 milyonun üzerinde indirme sayısına ulaşmış ve Symfony ekosisteminde yaygın olarak tercih edilen bir çözümdür.
Hangi ihtiyaçlarda değerlendirilebilir?
- Symfony tabanlı API geliştiren ekipler
- Farklı domain veya alt domainlerde barınan frontend uygulamalarına hizmet veren projeler
- CORS başlıklarını merkezi ve yapılandırılabilir bir şekilde yönetmek isteyen geliştiriciler
Yaygın kullanım alanları
SPA ve API Ayrımı
React, Vue veya Angular gibi modern frontend framework'leri ile geliştirilen tek sayfa uygulamaları (SPA) genellikle ayrı bir domain veya port üzerinden çalışır. Bu durumda, tarayıcı SPA'nın API'ye yaptığı istekleri CORS politikaları nedeniyle engelleyebilir. nelmio/cors-bundle, Symfony API'nize gerekli CORS başlıklarını ekleyerek bu sorunu çözer.
Mobil Uygulama Backend'i
Mobil uygulamalar (iOS/Android) doğrudan API'ye istek gönderdiğinde CORS kısıtlamaları genellikle uygulanmaz; ancak web görünümleri (WebView) veya hibrit uygulamalar tarayıcı tabanlı olduğundan CORS yapılandırması gerekebilir. Bu paket, Symfony backend'inizin bu tür istemcilerle uyumlu çalışmasını sağlar.
Çoklu Alt Domain Desteği
Kurumsal projelerde farklı alt domainler (örneğin api.example.com ve app.example.com) kullanılabilir. nelmio/cors-bundle, hangi origin'lerin API'ye erişebileceğini tanımlamanıza olanak tanır, böylece yalnızca güvenilir kaynakların istek yapmasına izin verilir.
İncelenmesi gereken noktalar
- CORS yapılandırması, güvenlik açısından dikkatli yapılmalıdır. Tüm origin'lere izin vermek (allow_origin: *) yerine yalnızca güvenilir domainleri listelemek önerilir.
- Paket, Symfony'in güvenlik ve routing altyapısıyla entegre çalışır; bu nedenle Symfony sürümüne uygun paket sürümünün seçilmesi önemlidir.
- CORS başlıkları yalnızca tarayıcı tabanlı istemcileri etkiler; sunucu tarafı istekler (server-to-server) CORS kısıtlamalarına tabi değildir.
WordPress.org
Kurulum ve geliştirme notları
Paketin kurulumu Composer ile yapılır ve Symfony Flex kullanılıyorsa otomatik olarak yapılandırma dosyası oluşturulur.
- 1Composer kullanarak paketi projenize ekleyin: composer require nelmio/cors-bundle
- 2Symfony Flex kullanılıyorsa, paket otomatik olarak config/packages/nelmio_cors.yaml dosyasını oluşturur.
- 3Oluşturulan yapılandırma dosyasında paths ve allow_origin gibi ayarları projenize göre düzenleyin.
Geliştirme sürecinde, CORS yapılandırmasını ihtiyaçlarınıza göre özelleştirebilirsiniz. Paket, Symfony'in event listener mekanizmasını kullanarak isteklere CORS başlıklarını ekler.
- Yapılandırma dosyasında farklı path'ler için ayrı CORS kuralları tanımlanabilir.
- Allow methods, allow headers, expose headers gibi başlıklar üzerinde detaylı kontrol sağlar.
- Preflight (OPTIONS) isteklerini otomatik olarak yönetir.
Hazır çözümün ötesinde
Özel geliştirme ne zaman değerlendirilebilir?
ZeplinGo olarak, Symfony projelerinizde nelmio/cors-bundle'ın kurulumu ve yapılandırmasını projenizin ihtiyaçlarına göre planlayabiliriz. API güvenliği, performans ve tarayıcı uyumluluğu gibi konularda size özel çözümler geliştiriyoruz. Kurumsal Websitesi Paketi kapsamında da bu tür teknik gereksinimleri değerlendiriyoruz.
Ücretsiz ön çalışma isteyin →Değerlendirme soruları
nelmio/cors-bundle hangi Symfony sürümleriyle uyumludur?
Paket, Symfony'in çeşitli sürümleriyle uyumlu olacak şekilde geliştirilmiştir. Ancak projenizde kullandığınız Symfony sürümüne uygun paket sürümünü seçmeniz önemlidir. Güncel sürüm bilgileri için Packagist sayfasını inceleyebilirsiniz.
CORS yapılandırması yapmazsam ne olur?
Tarayıcı tabanlı istemciler (SPA, WebView) farklı bir origin'den API'nize istek gönderdiğinde, tarayıcı CORS politikaları nedeniyle isteği engeller. Bu durumda uygulamanız düzgün çalışmayabilir. CORS yapılandırması, bu tür erişimleri kontrol altına almanızı sağlar.
Bu paket güvenlik açıklarına neden olur mu?
CORS yapılandırması yanlış yapılırsa (örneğin tüm origin'lere izin vermek) güvenlik riskleri oluşabilir. Paket, doğru yapılandırıldığında güvenli bir şekilde çalışır. Önemli olan, erişime izin verilen origin'leri dikkatli bir şekilde belirlemektir.