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.

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


Yazar : Emrah Kahraman

Bilgisayar Mühendisi

“ASP.NET Web Api Kullanımı 8 (Enabling Cross-Origin Requests)” için 4 Yorum

  1. Kürşat Can dedi ki:

    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. Emrah Kahraman dedi ki:

    Bu yazıda anlattıklarım başka bir domaindan gelen istekler içindir, sizin sorununuz farklıdır diye düşünüyorum.

  3. Gökhan dedi ki:

    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.

  4. Emrah Kahraman dedi ki:

    ASP.NET Web Api Kullanımı (Get Method) başlıklı yazıma bakabilirsiniz.

ASP.NET Web Api Kullanımı 8 (Enabling Cross-Origin Requests) Yazısı için Yorum Yapabilirsiniz

Kan Bağışı
Sponsor
Alexa
Hakkımda
Bağlantılar