Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 21428|Atsakyti: 1

[WebAPI] AJAX kryžminių domenų iškvietimų į ASP.NET MVC arba WebAPI paslaugas problemos ir sprendimai

[Kopijuoti nuorodą]
Paskelbta 2015-12-01 15:20:20 | | | |
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ą.





Ankstesnis:Oficiali "Lenovo" kanalo nešiojamojo kompiuterio citata gruodžio 1 d.
Kitą:Įdiekite paprastą Http paslaugą naudodami "HttpListener"
 Savininkas| Paskelbta 2015-12-01 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>
Kopijuoti kodą


Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com