React uygulamalarında HTTP isteklerinde kullanılan Axios kütüphanesi, sunucudaki verilere erişimi sağlar Ancak, farklı bir domain'deki kaynaklara erişim gibi durumlarda CORS ayarlarına ihtiyaç duyulur CORS, Cross-Origin Resource Sharing'nin kısaltmasıdır ve farklı sunuculardan çeşitli kaynaklara erişimi sağlamak için bir mekanizmadır
Axios, modern web uygulamalarında HTTP isteklerinde kullanılan kolay ve güçlü bir JavaScript kütüphanesidir Promise yapısı sayesinde asenkron işlemler kolayca yönetilebilir ve uygulama güvenliği ve kullanıcı deneyimi için interceptor özelliği kullanılabilir
CORS politikaları, farklı domain'ler arasındaki HTTP taleplerinde hangi isteklerin izin verileceğini belirleyen kurallardır Basit taleplerde sadece belirli başlıklar izin verilirken, preflighted talepler önceden kontrol edilir Bu politikalar sayesinde web uygulamalarının güvenliği ve verimliliği

React, modern web uygulamaları geliştirirken sıklıkla tercih edilen bir JavaScript kütüphanesidir. Ancak, uygulama geliştirirken sunucudaki verilere erişmek veya göndermek gerekebilir. Bu durumda, HTTP istekleri için kullanılan Axios kütüphanesi devreye girmektedir. Bu makalede, React uygulamalarında Axios kullanımı ile birlikte CORS ayarları konusunda detaylı bilgi verilecektir.
CORS, Cross-Origin Resource Sharing kelimelerinin kısaltmasıdır ve farklı bir domain'deki kaynaklara erişmek için gerekli bir mekanizmadır. CORS sayesinde, web uygulamaları özellikle farklı sunuculardan çeşitli kaynaklara erişebilirler. Örneğin, bir web uygulaması, farklı bir sunucudaki verilere Ajax çağrısı yapabilir.
Bu makalede, Axios kütüphanesi ile birlikte CORS ayarlarının nasıl yapılandırılacağı ve hangi politikaların kullanılabileceği ayrıntılı bir şekilde ele alınacak. HTTP isteklerinde değişiklik yapmak isteyen web uygulama geliştiricileri için bu konular oldukça önemlidir. Unutmayın, Axios kullanımı ve CORS ayarları, React uygulamalarında HTTP taleplerini doğru şekilde yapılandırarak daha güvenli ve verimli bir uygulama geliştirmenizi sağlayacak unsurlardır.
Axios Nedir?
Axios, modern web uygulamalarında HTTP talepleri göndermek için sıklıkla kullanılan bir Javascript kütüphanesidir. Axios, standart XMLHttpRequest isteklerinin yerini almıştır ve daha kolay kullanım sağlamaktadır. Axios, web uygulamalarında JSON verileri göndermek ve almak için kullanıldığı gibi, RESTful API'ler üzerinde de çalışmaktadır.
Axios, "Promise" temelli bir yapıya sahiptir ve bu nedenle asenkron işlemleri kolayca yönetebilir. Promise yapısı, bir istek gönderildiğinde, sunucudan yanıt gelene kadar diğer işlemlerin yürütülmesine olanak tanır. Bu da web uygulamalarının daha verimli ve kullanıcı dostu olmasını sağlar.
Axios, ayrıca girilen bilgilerin doğruluğunu kontrol etmek için "interceptor" özelliğine sahiptir. Interceptorler, istekler gönderilmeden önce ve gelen yanıtlar işlenmeden önce istekleri kontrol etmek için kullanılır. Bu özellik sayesinde uygulamaların güvenliği ve kullanıcı deneyimi artırılır.
Kısacası, Axios, HTTP taleplerinde bulunmak için kullanılan güçlü bir Javascript kütüphanesidir. Axios'un Promise temelli yapısı, kolay kullanımı ve güçlü özellikleri sayesinde, modern web uygulamaları için vazgeçilmez bir araç haline gelmiştir.
CORS Nedir?
CORS kısaca farklı domain'deki kaynaklara erişmek için kullanılan bir mekanizmadır. Bu mekanizma, modern web uygulamalarının yaygınlaşması ile ortaya çıkan bir ihtiyaçtır. Özellikle, bir web sitesindeki Javascript kodu farklı bir domain'deki bir API'ye bağlantı kurmak istediğinde CORS mekanizması devreye girer.
CORS, farklı bir domain'deki kaynaklara erişirken güvenlik riskleri barındıran Cross-Site Scripting (XSS) ve Cross-Site Request Forgery (CSRF) saldırılarına karşı korunmak için tasarlanmıştır. Bu sayede, web sitesine zarar vermek isteyen bir saldırganın, başka bir domain'e zarar vermesinin de önüne geçilmiş olur.
CORS Politikaları Nelerdir?
CORS (Cross-Origin Resource Sharing), farklı domain'ler arasındaki HTTP taleplerinin gerçekleştirilmesine izin veren bir mekanizmadır. CORS politikaları ise farklı domain'ler arasındaki HTTP taleplerinde hangi isteklerin izin verileceğini belirleyen kurallardır. Bu politikalar, sunucu tarafında yapılandırılır ve sunucu, gelen istekleri bu politikalara göre değerlendirir.
Basit talepler (GET ve POST gibi standart HTTP yöntemleri), CORS politikaları açısından daha az riskli olarak kabul edilirler. Bu taleplerde, istek başlıklarında sadece bazı belirli başlıklar izin verilir. Preflighted talepler ise basit taleplerin dışındaki HTTP yöntemleri veya belirli başlık değerleri içeren taleplerdir. Bu talepler önceden bir OPTIONS isteği yaparak kontrol edilirler.
CORS politikaları, güvenlik risklerinin önlenmesi için kullanılır. Bu politikalar sayesinde, bir domain'in kaynaklarının, sadece izin verilen diğer domain'ler tarafından erişilmesine izin verilir. Bu da web uygulamalarının güvenliğinin sağlanmasına yardımcı olur.
Simple Requests
=Basit talepler, standart HTTP yöntemleri olan GET ve POST ile gerçekleştirilen taleplerdir. Bu tür talepler, istek başlıklarında sadece bazı belirli başlıkların izin verildiği sınırlı bir kapsama sahiptir.
Bu sınırlı kapsamda, izin verilen istek başlıkları şunlardır:
Başlık | Açıklama |
---|---|
Accept | İstek mesajının kabul edilebilir MIME tiplerini belirler. |
Accept-Language | İstemci tarafından tercih edilen dil ayarlarını belirler. |
Content-Language | Yanıt mesajının içeriği için belirli dil ayarlarını belirler. |
Content-Type | İstek veya yanıt mesajının içeriğinin MIME tipini belirler. |
Bu izin verilen başlıklar arasında, Content-Type, gönderilen verinin hangi formatta olduğunu belirleyen bir başlıktır ve bir POST isteği gönderirken sıklıkla kullanılır.
İzin verilen başlıklar dışındaki istekler, CORS politikaları gereği preflighted requests olarak tanımlanır ve önceden bir OPTIONS isteği yaparak kontrol edilirler. Bu sayede, isteklerin güvenliği sağlanmaktadır.
Preflighted Requests
Birçok durumda, basit GET ve POST talepleri yeterli olmayabilir ve HTTP talepleri daha karmaşık hale gelebilir. Örneğin, PUT, DELETE veya belirli başlık değerleri içeren talepler gibi. Bu durumlarda, CORS politikaları devreye girer ve önceden bir OPTIONS isteği yapılır. Bu istek, sunucudan hangi HTTP yöntemlerinin ve istek başlıklarının izinli olduğunu aldıktan sonra gerçek talep gönderilir. Bu sayede, sunucu tarafında güvenliğin sağlanması amaçlanır.
CORS Ayarları Nasıl Yapılır?
CORS ayarları, sunucu tarafında yapılan bir işlemdir ve sunucunun talep geldiği domain ve bağlantı noktasını kontrol ederek bir yanıt vermesini gerektirir. Bu ayarlar, sunucu yanıtlarında bulunan bazı başlıklar aracılığıyla sağlanır.
Access-Control-Allow-Origin header, sunucudan gelen yanıtta hangi domain'lerin HTTP taleplerinin izin verildiğini belirler. Access-Control-Allow-Headers header, sunucudan gelen yanıtta hangi istek başlıklarının izin verildiğini belirler. Access-Control-Allow-Methods header, sunucudan gelen yanıtta hangi HTTP yöntemlerinin izin verildiğini belirler. Bu başlıkların ayarlanması, sunucu tarafından gerçekleştirilir ve farklı sunucular farklı ayarlar gerektirebilir.
Ayrıca, sunucu yanıtlarını kontrol etmek için browser tarafında kullanılan bir çok IP veya domain kontrol aracı mevcuttur. Örneğin, Chrome için 'Allow-Control-Allow-Origin: *' gibi eklentiler kullanılabilir. Bu eklentiler, CORS yazılıp test edilirken kullanışlı yardımcılardır.
Genel olarak, CORS ayarlarının doğru şekilde yapılması, uygulamaların güvenliğini ve verimliliğini artırır. Bu nedenle, sunucu yanıtlarında bu ayarların sağlanması büyük önem taşır.
Axios İle CORS Ayarları Nasıl Yapılır?
Axios ile CORS ayarları yapmak oldukça kolaydır. Axios istekleri için headers nesnesinde yapılabilmektedir. Öncelikle, Axios kütüphanesi projenize dahil edilmelidir. Ardından, istek yapılacak olan endpoint belirtilirken bir header nesnesi oluşturulabilir. Bu header nesnesinde, CORS ayarları yapılabilmektedir.
Örneğin, "Access-Control-Allow-Origin" header'ı ile hangi domain'lerin HTTP taleplerinin izin verildiği belirtilir. Ayrıca, "Access-Control-Allow-Headers" header'ı ile hangi istek başlıklarının izin verildiği belirtilir. "Access-Control-Allow-Methods" header'ı ile de hangi HTTP yöntemlerinin izin verildiği belirtilir.
Bir örnek ile açıklamak gerekirse;
Endpoint | Header Ayarları |
---|---|
https://example.com/api |
|
Yukarıdaki örnekte, "https://example.com/api" endpoint'ine yapılan isteklerde, sadece "https://mywebsite.com" domain'inden gelen HTTP taleplerine izin verildiği belirtilmiştir. Ayrıca, "X-Custom-Header1" ve "X-Custom-Header2" istek başlıklarına izin verildiği, sadece POST, GET ve OPTIONS HTTP yöntemlerinin izin verildiği belirtilmiştir.
Access-Control-Allow-Origin
Access-Control-Allow-Origin header, sunucudan gelen yanıtta hangi domain'lerin HTTP taleplerinin izin verildiğini belirler. Bu header, sunucunun hangi domain'lere güvenilir olduğunu belirtmesine izin vererek, CORS politikaları içindeki en önemli header'lardan biridir. Bu header, iki farklı değere sahip olabilir:
- *: Bu değer, tüm domain'lerin HTTP taleplerine izin verildiğini belirtir. Bu değer, güvenlik açısından pek önerilmez.
- Belirli bir domain: Bu değer, sadece belirli bir domain'in HTTP taleplerinin izin verildiğini belirtir. Bu şekilde, sunucu sadece belirli domain'lerden gelen talepleri kabul eder ve diğer domain'lere yanıt vermez. Bu, güvenli bir uygulama yöntemidir.
Bu header, sunucu tarafında yapılandırılmalıdır. React uygulamasında Axios kullanırken, sunucu tarafında Access-Control-Allow-Origin header'ını yapılandırmalısınız. Header'ı doğru bir şekilde yapılandırarak, uygulamanızın security'sini güçlendirebilirsiniz.
Access-Control-Allow-Headers
Access-Control-Allow-Headers Nedir?
CORS ayarı yapılırken, sunucudan gelen yanıtta hangi istek başlıklarının izin verildiği de önemlidir. Bu durumda kullanılan header "Access-Control-Allow-Headers" olarak adlandırılır. Bu header, sunucudan gelen yanıtta, hangi istek başlıklarına izin verildiğini belirler.
Bu header kullanılmadan önce, önemli bir not olarak belirtmek istediğimiz şey; tüm istek başlıklarının izin verilmesi güvenlik açısından riskli olabilir. Bu nedenle, yalnızca gereksinim duyulan başlıklara izin vermek önemlidir. Belirli bir başlık için izin vermek istiyorsanız, isteğinizi belirli bir şekilde yapılandırabilirsiniz.
Bir örnek vermek gerekirse; eğer "Authorization" başlığına izin vermek istiyorsanız, sunucu yanıtında Access-Control-Allow-Headers header'ını şu şekilde tanımlayabilirsiniz:
Header | Value |
---|---|
Access-Control-Allow-Headers | Authorization |
Bu örnekte, sadece "Authorization" başlığına izin verilirken, diğer başlıklar için izin verilmediği görülmektedir.
İstek başlıklarının doğru yapılandırılması, uygulamanın güvenliği için oldukça önemlidir. Bu nedenle, CORS ayarları yapılandırılırken, hangi istek başlıklarının izin verileceği de detaylı bir şekilde belirtilmelidir.
Access-Control-Allow-Methods
Access-Control-Allow-Methods, sunucudan gelen yanıtta hangi HTTP yöntemlerinin izin verildiğini belirleyen bir CORS header'ıdır. Bu header, sunucunun belirlediği HTTP yöntemleri ile ilgili kullanıcıya bilgi verir.
Bu header'ı kullanarak, sunucu belirli HTTP yöntemlerinin kullanımını izin verebilir. Örneğin, GET, POST, DELETE, PUT, PATCH gibi HTTP yöntemlerini belirleyebilir. Diğer taraftan, sunucu, bu HTTP yöntemlerini kullanmasına izin vermediği durumlarda, isteklere 405 (Method Not Allowed) hata kodu ile yanıt verecektir.
Access-Control-Allow-Methods, OPTIONS isteği ile belirlenen HTTP yöntemlerini de içerebilir. Bu sayede, sunucu istemciye önceden belirlenen HTTP yöntemleri hakkında bilgi verebilir.
Ayrıca, sunucu, Access-Control-Allow-Methods header'ı belirlemeden önce, talep eden istemcinin yetkisini kontrol etmelidir. Bu kontroller sonucunda, isteklere izin verilen HTTP yöntemleri belirlenir ve Access-Control-Allow-Methods header'ı ile kullanıcıya bilgi verilir.
Bu header, CORS politikalarının uygulanmasında önemli bir rol oynamaktadır. Doğru şekilde kullanıldığında, yalnızca belirtilen HTTP yöntemlerine izin verir ve uygulamanın güvenliğini sağlar.
Sonuç
Axios ve CORS ayarları, React uygulamalarında HTTP taleplerinin doğru şekilde yapılandırılması için oldukça önemli unsurlardır. Axios kütüphanesi, HTTP taleplerini yapmak için güvenilir bir çözümdür ve CORS mekanizması, farklı domain'ler arasında kaynak erişimini mümkün kılar.
CORS politikaları, HTTP taleplerindeki güvenliği artırmaya yardımcı olur. Bu politikalar, belirli bir domain'den gelen isteklerin hangi domain'lere gönderilebileceğine ve hangi HTTP yöntemlerinin izin verileceğine karar verir. Axios ile CORS ayarları, HTTP taleplerinde bu politikaların doğru şekilde yapılandırılmasını kesinleştirir.
React uygulamalarında Axios kullanırken, sunucudan gelen yanıtlarda hangi istek başlıklarının izin verildiğini belirleyen header'lar göndermek önemlidir. Access-Control-Allow-Origin, Access-Control-Allow-Headers ve Access-Control-Allow-Methods gibi header'lar, Axios isteklerinin doğru şekilde yapılandırılması için kullanılabilir.
Sonuç olarak, Axios ve CORS ayarları, React uygulamalarının doğru şekilde yapılandırılması için önemlidir. Bu ayarlar, uygulamaların güvenliğini artırır ve verimliliğini arttırarak daha iyi bir kullanıcı deneyimi sağlar.