ASP.NET Web Api Kullanımı 8 (Enabling Cross-Origin Requests)

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 tagleri içine aşağıdaki kodları ekleyelim.

[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.

“ASP.NET Web Api Kullanımı 8 (Enabling Cross-Origin Requests)” üzerine 4 yorum.

  1. 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?

  2. 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.

Bir cevap yazın