|
Problemos aprašymas Kai kryžminio domeno skambutis ASP.NET MVC arba paslauga, parašyta ASP.NET žiniatinklio API, jis tampa nepasiekiamas. Dauginimosi metodas - Naudokite šabloną, kad sukurtumėte paprasčiausią ASP.NET žiniatinklio API projektą, derinkite jį, kad įsitikintumėte, jog jis veikia
- Sukurkite kitą projektą tik su vienu HTML puslapiu ir atlikite AJAX skambutį
- Atidarykite šį puslapį naršyklėje ir rasite šią klaidą (405: metodas neleistinas)
Pastaba: Tokia pati situacija yra ir ASP.NET MVC. Kai kuriais atvejais MVC taip pat gali būti tiesiogiai naudojamas paslaugoms kurti, o tai turi savų privalumų ir trūkumų, palyginti su WebAPI. Žemiau pateikiamas paslaugos, sukurtos naudojant MVC, pavyzdys
Priežasties analizė Pagrindinė kryžminio domeno problemos priežastis yra ta, kad naršyklė turi mažas abiejų užklausų teises ir paprastai leidžia skambinti tik vietinio domeno ištekliams, nebent tikslinis serveris aiškiai nurodo, kad leidžiami kryžminiai skambučiai. Todėl, nors kryžminių domenų problemą sukelia naršyklės elgesys, sprendimas yra serverio pusėje. Nes neįmanoma reikalauti, kad visi klientai sumažintų saugumą.
sprendimas Tiek ASP.NET MVC, tiek ASP.NET žiniatinklio API projektų tipų atlikau keletą tyrimų ir nusprendžiau, kad šis scenarijus yra įmanomas. Jei norite ASP.NET MVC, į web reikia įtraukti tik šį turinį.config
ASP.NET žiniatinklio API, be aukščiau pateiktų nustatymų, reikia pridėti specialų dizainą, tai yra pridėti OPTIONS metodą kiekvienam API valdikliui, bet nieko negrąžinant. viešoji eilutė Options() { grąžinti null; HTTP 200 atsakymas su tuščiu tekstu }
Pastaba: Šią funkciją taip pat galima atlikti atlikus tam tikrus tyrimus, todėl gali būti geriau ją suprojektuoti kaip filtrą.
|