Web API CORS(Cross-Origin Resource Sharing)

http://localhost:8080/Home/Index

http://localhost:8080/api/Employess

Aynı domain ve port üzerinde gönderilen istekler cross domain değildirler, istedikleri gibi haberleşebilir. Ancak cross domainlerse isteklerimiz başarısız olacaktır.

Öncelikle cross domain oluşturan durumlara bakalım.

1- Port numarası değiştiği anda aynı domainde de olsa artık cross domaindir.

http://localhost:8080/Home/Index

http://localhost:8081/api/Employess

2- Farklı domainlerde olması zaten cross domaindir.

http://mysite.com/Home/Index

http://mysite.net/api/Employess

3- Farklı protokol olması da son olarak cross domaindir.

htpp://mysite.com/Home/Index

htpps://mysite.com/api/Employess

Bu durumlarda peki haberleşmeyi sağlamak için ne yapabiliriz?

1- Öncelikle nugetten Microsoft.AspNet.WebApi.CORS indireceğiz.

2- Sonra App_Start klasörü altındaki WebConfig.cs içinde

EnableCorsAttribute cors = new EnableCorsAttribute("izin verilecek adres","*","*");
/* * demek bütün controllerına ve bütün actionlarına izin ver anlamına gelir. */
config.EnableCors(cors);

Yazacağımız bu 2 satır kodla erişime izin vermiş oluruz.

Bir diğer yöntemse uygulayacağımız controller üzerine bir attribute ekleyebiliriz.

[EnableCors("izin verilecek adres","*","*")]