|
Опис проблеми Коли міждоменний виклик ASP.NET MVC або сервіс, написаний ASP.NET веб-API, він стає недоступним. Метод розмноження - Використовуйте шаблон, щоб створити найпростіший ASP.NET Web API проєкт, відлагодіть його, щоб переконатися, що він працює
- Створіть інший проєкт лише з однією HTML-сторінкою і зробіть AJAX-виклик
- Відкрийте цю сторінку у вашому браузері, і ви знайдете таку помилку (405: Метод не дозволено)
Примітка: Така сама ситуація трапляється у ASP.NET MVC. У деяких випадках MVC також можна використовувати безпосередньо для розробки сервісів, що має свої переваги та недоліки порівняно з WebAPI. Нижче наведено приклад сервісу, розробленого за допомогою MVC
Аналіз причин Основна причина проблеми міждоменної проблеми полягає в тому, що браузер має низькі привілеї на обидва запити і зазвичай дозволяє виклики ресурсів лише в локальному домені, якщо цільовий сервер явно не повідомляє про дозволені крос-доменні виклики. Отже, хоча проблема міждоменної роботи спричинена поведінкою браузера, рішення знаходиться на стороні сервера. Тому що неможливо змусити всіх клієнтів знижувати безпеку.
рішення Для ASP.NET як типів проєктів MVC, так і ASP.NET Web API я провів дослідження і визначив, що наступний сценарій є можливим. Для ASP.NET MVC потрібно додати наступний контент до web.config
Для ASP.NET веб-API, окрім вищезазначених налаштувань, потрібно додати спеціальний дизайн — додати метод OPTIONS для кожного контролера API, але без жодного повернення. публічні рядкові опції() { return null; Відповідь HTTP 200 з порожнім тілом }
Примітка: цю функцію можна виконати за допомогою деяких досліджень, і, можливо, краще спроектувати її як фільтр.
|