Başka bir domainden Ajax request yapılırken tarayıcı güvenlik gereği sayfayı engeller. Bu kısıtlamaya same-origin policy denir. Ancak Web Api ile bazen başka domainlerden request yapmak gerekebilir.
Cross Origin Resource Sharing (CORS), Same-origin policy kısıtlamasını ortadan kaldırıp başka bir domainden request yapmamızı sağlayan W3C standartıdır.
CORS kullanarak bazı cross-origin requestlere izin verilirken diğer istekler engellenir. Bu yazımda CORS kullanımını nasıl aktif yaparız ondan bahsedeceğim.
Visual Studio 2012 de Tools -> Library Package Manager altındaki Package Manager Console butonuna basalım. Visual Studionun alt tarafında console kodu yazmamız için PM> şeklinde alan açılmış olmalıdır.
İlk olarak aşağıdaki kodu yazıp projectName kısmına proje adını yazalım ve entera basalım. Cors işlemleri için gerekli packageları kuralım.
Install-Package Microsoft.AspNet.WebApi.Cors -pre -project projectName
Şimdi aşağıdaki kodu çalıştıralım.
Install-Package Microsoft.AspNet.WebApi -IncludePrerelease
WebApiConfig classı içindeki Register metoduna
configuration.EnableCors();
kodunu ekleyelim.
web.config dosyasında
[code lang=”xml”]
<httpprotocol>
<customheaders>
<add name="Access-Control-Allow-Origin" value="*"></add>
<add name="Access-Control-Allow-Headers" value="Content-Type"></add>
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"></add>
</customheaders>
</httpprotocol>
Artık projemizi çalıştırıp başka bir MVC projesinden bu projenin Controller methodlarına ajax request yapıp cevap alabiliriz.
Kürşat Can
14/09/2015 — 11:59
Merhaba Emrah bey,
web.config içerisine ekleyelim dediğiniz kodlar görünmüyor o kısmı düzeltebilir misiniz. Ayrıca benim sorunum tarayıcada dotNetApi den getirdiğim verilerin telefonumda gelmemesi(tablonun get methoduna bile girmiyor) sizin gösterdiğiniz çözüm yolu bu sorunu çözer mi?
Emrah Kahraman
15/10/2015 — 07:57
Bu yazıda anlattıklarım başka bir domaindan gelen istekler içindir, sizin sorununuz farklıdır diye düşünüyorum.
Gökhan
17/10/2016 — 20:34
Merhaba, yazı için teşekkürler ancak WebApiConfig diye bir class yok, bu class ı kendimiz mi oluşturuyoruz yada normalde otomatik kendisi mi gelmeli? referansları ekledim ancak sonrasında tıkandım.
Emrah Kahraman
18/10/2016 — 06:39
ASP.NET Web Api Kullanımı (Get Method) başlıklı yazıma bakabilirsiniz.