Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 21428|Odgovoriti: 1

[WebAPI] Težave in rešitve za AJAX meddomenske klice za ASP.NET MVC ali WebAPI storitve

[Kopiraj povezavo]
Objavljeno na 1. 12. 2015 15:20:20 | | | |
Opis problema
Ko se meddomenski klic ASP.NET MVC ali storitev, napisano ASP.NET spletni API, postane nedostopna.
Metoda razmnoževanja
  • Uporabite predlogo za ustvarjanje najpreprostejšega ASP.NET projekta spletnega API-ja, ga razhroščite, da zagotovite, da deluje
  • Ustvarite nov projekt z le eno HTML stranjo in naredite AJAX klic
  • Odprite to stran v svojem brskalniku in našli boste naslednjo napako (405: Metoda ni dovoljena)

    Opomba: Enaka situacija se dogaja v ASP.NET prometni nesreči. V nekaterih primerih se MVC lahko uporablja tudi neposredno za razvoj storitev, kar ima svoje prednosti in slabosti v primerjavi z WebAPI. Spodaj je primer storitve, razvite z uporabo MVC


Analiza vzrokov
Temeljni razlog za problem med domenami je, da ima brskalnik nizke privilegije na obeh zahtevah in običajno dovoljuje klice le na vire v lokalni domeni, razen če mu ciljni strežnik izrecno pove, da so klici med domenami dovoljeni.
Zato, čeprav je problem med domenami posledica vedenja brskalnika, je rešitev na strežniški strani. Ker ni mogoče zahtevati, da vsi odjemalci zmanjšajo varnost.

rešitev
Za ASP.NET MVC in ASP.NET vrste spletnih API-jev sem naredil nekaj raziskav in ugotovil, da je naslednji scenarij izvedljiv.
Za ASP.NET MVC morate v web.config dodati le naslednjo vsebino


Za ASP.NET spletne API-je je poleg zgornjih nastavitev treba dodati poseben načrt, in sicer dodati metodo OPTIONS za vsak API kontroler, vendar brez vračanja česarkoli.
public string Options()
{
return null; HTTP 200 odgovor s praznim telesom
}

Opomba: To funkcijo je mogoče opraviti tudi z nekaj raziskovanja, zato je morda bolje, da jo oblikujete kot filter.





Prejšnji:Uradni citat iz dnevnika kanala Lenovo 1. decembra
Naslednji:Implementirajte preprosto Http storitev s HttpListenerjem
 Najemodajalec| Objavljeno na 1. 12. 2015 15:39:52 |
  1. <system.webServer>

  2. <httpProtocol>

  3. <customHeaders>

  4. <add name="Access-Control-Allow-Origin" value="*" />

  5. <add name="Access-Control-Allow-Headers" value="Content-Type" />

  6. <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />

  7. </customHeaders>

  8. </httpProtocol>

  9. <handlers>

  10. <remove name="ExtensionlessUrlHandler-Integrated-4.0" />

  11. <remove name="OPTIONSVerbHandler" />

  12. <remove name="TRACEVerbHandler" />

  13. <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

  14. </handlers>

  15. </system.webServer>
Kopiraj kodo


Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com