Управління доступністю для кроссдоменних запитів в проектах web api

Включення CORS в web.config

Тепер, коли зрозуміла проблема, давайте позбудемося помилки. Найпростіший спосіб додати заголовок "Access-Control-Allow-Origin" в web.config. Відкриємо web.config проекту Web API і додамо наступну розмітку в секцію .

Тут в секції доданий заголовок http з ім'ям "Access-Control-Allow-Origin" і значення для нього "*", що означає запити з усіх доменів дозволені. Це включить специфікацію для Web API. І якщо запустити програми, то помилки вже не буде.

Підтримка специфікації CORS в ASP.NET Web API

Управління доступністю для кроссдоменних запитів в проектах web api

Далі можна встановити пакет Microsoft ASP.NET Web API Cross Origin Support.

Управління доступністю для кроссдоменних запитів в проектах web api

Установка цього пакета додає посилання на дві збірки, які відповідають за підтримку CORS:

Застосування підтримки CORS

Після того, як встановлена ​​підтримка CORS для Web API, застосуємо її. Не забудьте прибрати заголовок "Access-Control-Allow-Origin" з web.config, якщо він там є. Відкриваємо файл WebApiConfig.cs в проекті Web API і додамо в метод Register рядок:

Це включить підтримку CORS в проекті Web API. Але поки що жоден контролер не підтримує CORS. Щоб це зробити, треба відкрити контролер ValuesController і додати атрибут [EnableCors]:

Атрибут [EnableCors] приймає три параметри: домени, заголовки і методи (origins, headers and methods). Значення "*" означають, що всі домени, заголовки і методи доступні. Атрибут у контролера дозволяє викликати все методи контролера. Якщо потрібно використовувати тільки деякі методи, то атрибут можна прибрати у контролера і помістити над необхідними методами.

Тобто зараз метод Get доступний для інших доменів, а інші способи немає. Якщо потрібно виключити методи, то використовуємо атрибут [DisableCors]:

В цьому випадку будуть доступні всі методи, крім Get.

Отже, специфікація CORS дозволяє здійснювати міждоменні AJAX-запити. Підтримка CORS в проектах Web API реалізована в збірках System.Web.Cors і System.Web.Http.Cors. Для управління доступністю використовуються атрибути [EnableCors] і [DisableCors].

Схожі статті