Flask CORS Policy Hatası Nasıl Çözülür?

**

BFS



Flask ve CORS Hatası ile Tanışın



Flask ile bir API geliştirdiyseniz ve front-end tarafında bir uygulama çalıştırıyorsanız, büyük ihtimalle "CORS Policy" hatası ile karşılaşmışsınızdır. Eğer bu hatayı gördüyseniz, yalnızca bir hata değil, aynı zamanda web geliştirme yolculuğunuzda önemli bir dönemeçle karşı karşıyasınız demektir. Bu yazımızda Flask ile ilgili yaşadığınız bu CORS (Cross-Origin Resource Sharing) sorununun nasıl çözüleceğine dair adım adım bir rehber sunacağız.

CORS Hatası Nedir?



CORS hatası, aslında tarayıcı güvenlik politikalarının bir sonucudur. Tarayıcılar, farklı domainler veya portlar arasında veri paylaşımını kısıtlayarak, kötü niyetli saldırıların önüne geçmeye çalışır. Flask'ta API geliştirdiğinizde, front-end ile arka uç arasında bir "cross-origin" isteği yapılırsa, tarayıcı bu isteği engelleyebilir. Bunun sonucunda "CORS policy" hatası alırsınız.

Örnek bir hata mesajı:
"Access to fetch at 'http://localhost:5000/api/data' from origin 'http://localhost:3000' has been blocked by CORS policy."

CORS Sorununu Çözmek İçin Flask'ta Ne Yapmalısınız?



Endişelenmeyin! Flask'ta CORS hatasını çözmek aslında oldukça basittir. İhtiyacınız olan tek şey, doğru kütüphaneyi yükleyip, basit bir yapılandırma eklemektir.

Adım 1: Flask-CORS Kütüphanesini Kurun

Flask'ta CORS hatasını çözmenin ilk adımı, Flask-CORS kütüphanesini yüklemektir. Flask-CORS, Flask uygulamanıza CORS desteği ekler ve ilgili başlıkları otomatik olarak yönetir.

Bunu pip ile kolayca yükleyebilirsiniz:


pip install flask-cors


Adım 2: Flask Uygulamanıza CORS'ı Ekleyin

Flask uygulamanıza CORS desteği eklemek oldukça kolaydır. Flask-CORS kütüphanesini import ettikten sonra, sadece bir satırla CORS'ı aktif edebilirsiniz.

İşte temel bir Flask uygulaması örneği:


from flask import Flask
from flask_cors import CORS

app = Flask(__name__)

# CORS'ı tüm uygulamaya ekleyin
CORS(app)

@app.route("/api/data", methods=["GET"])
def get_data():
    return {"message": "CORS sorunu çözüldü!"}

if __name__ == "__main__":
    app.run(debug=True)


Önemli Not: Bu çözüm, uygulamanızdaki her route (yol) için CORS'ı açacaktır. Eğer sadece belirli yollar için CORS’u aktif etmek isterseniz, o zaman sadece o yolları CORS ile işaretleyebilirsiniz.

Adım 3: CORS İzinlerini Özelleştirme

Eğer belirli bir domain’e veya port’a CORS izni vermek isterseniz, bunun için CORS yapılandırmasını özelleştirebilirsiniz. Örneğin, sadece `http://localhost:3000` adresine izin vermek için aşağıdaki gibi bir yapılandırma kullanabilirsiniz:


CORS(app, resources={r"/api/*": {"origins": "http://localhost:3000"}})


Bu şekilde yalnızca belirli yollar ve domainler için CORS izni verebilirsiniz. Güvenlik açısından bu yaklaşım daha iyidir çünkü sadece belirli kaynaklardan gelen istekleri kabul edersiniz.

Başka CORS Konfigürasyonları



Flask-CORS, çok daha fazla konfigürasyon seçeneği sunar. İhtiyacınıza göre CORS başlıklarını detaylı bir şekilde yapılandırabilirsiniz. İşte bazı yaygın kullanılan seçenekler:

-
origins: İzin verilen kaynakları tanımlar.
-
methods: Hangi HTTP metodlarına izin verileceğini belirler.
-
allow_headers: İzin verilen başlıkları belirtir.
-
expose_headers: İstemcinin erişebileceği başlıkları belirler.
-
supports_credentials: Kullanıcı kimlik doğrulaması için izin verir.

Örneğin, belirli metodlara izin vererek daha güvenli bir yapı oluşturabilirsiniz:


CORS(app, resources={r"/api/*": {"origins": "http://localhost:3000", "methods": ["GET", "POST"]}})


CORS Hatası İle İlgili Sık Karşılaşılan Sorunlar ve Çözümleri



-
Hata 1: "No 'Access-Control-Allow-Origin' header is present on the requested resource."
-
Çözüm: Flask uygulamanızda CORS başlıklarını eklediğinizden emin olun. Flask-CORS’ın doğru şekilde yapılandırıldığından ve başlıkların doğru yolla gönderildiğinden emin olun.

-
Hata 2: "CORS policy: No 'Access-Control-Allow-Methods' header is present."
-
Çözüm: İlgili HTTP metodlarını `methods` parametresiyle belirtin.

Sonuç



Flask ile API geliştirmek ve bir front-end uygulamasıyla entegre çalıştırmak bazen CORS politikaları yüzünden zorlayıcı olabilir. Ancak, Flask-CORS kütüphanesini kullanarak bu sorunları hızlıca çözebilirsiniz. Bu yazımızda CORS hatasını nasıl çözebileceğinizi ve bu hatayı önlemek için Flask’ta nasıl yapılandırma yapabileceğinizi detaylı bir şekilde inceledik.

Artık CORS Hatası Geçmişte Kaldı!



Geliştirme sürecinde karşılaştığınız bu tip küçük engeller aslında sizi daha iyi bir yazılımcı yapıyor. Unutmayın, her çözüm yeni bir öğrenme fırsatıdır. Flask ile API geliştirmeye devam ederken, CORS hatalarını hızlıca çözerek projelerinizi sorunsuz bir şekilde hayata geçirebilirsiniz.

İlgili Yazılar

Benzer konularda diğer yazılarımız

ApiUp Nedir?

Merhabalar, bir süredir üzerinde çalıştığım yeni projemi hayata geçirdim. Bu Proje sayesinde, IRC sunucuları en popüler uygulamalarla entegre edilebiliyor. Şu anda Skype, WhatsApp ve Telegram uygulamalarını destekliyoruz. API Sayesinde, IRC Sunucularından...

ASP.NET Core ile Mobil Uygulama Geliştirme: Cross-Platform Web ve Mobil Uygulama Birleştirme

Günümüzde mobil uygulamalar hayatımızın ayrılmaz bir parçası haline geldi. Akıllı telefonlarımızda geçirdiğimiz zamanın büyük bir kısmını mobil uygulamalar sayesinde geçiriyoruz. Peki, bir mobil uygulama geliştirirken karşılaştığımız zorlukları nasıl...

ASP.NET Core 500 Internal Server Error: Sebepleri ve Çözümleri

Bir web geliştiricisi olarak, karşılaştığınız en zorlayıcı hatalardan biri şüphesiz "500 Internal Server Error"dır. Bu hata, web uygulamanızda her şeyin yolunda gittiğini düşündüğünüz bir anda karşınıza çıkabilir ve tüm projeyi durdurabilir. Ancak merak...