|
Описание на проблема Когато кросдомейн повикване ASP.NET MVC или услуга, написана ASP.NET уеб API, тя става недостъпна. Метод на размножаване - Използвайте шаблон, за да създадете най-прост ASP.NET уеб 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 отговор с празно тяло }
Забележка: Тази функция може да се изпълни и с малко проучване и може да е по-добре да я проектирате като филтър.
|