See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 21428|Vastuse: 1

[WebAPI] Probleemid ja lahendused AJAX-i domeenideüleste kõnede puhul ASP.NET MVC või WebAPI teenustele

[Kopeeri link]
Postitatud 01.12.2015 15:20:20 | | | |
Probleemi kirjeldus
Kui domeenideüleine kõne ASP.NET MVC või veebi API ASP.NET kirjutatud teenus, muutub see ligipääsmatuks.
Paljunemismeetod
  • Kasuta malli, et luua kõige lihtsam ASP.NET Web API projekt, siluda seda, et veenduda, kas see töötab
  • Loo teine projekt ainult ühe HTML-lehega ja tee AJAX-kõne
  • Ava see leht oma brauseris ja leiad järgmise vea (405: Meetod keelatud)

    Märkus: sama olukord esineb ASP.NET MVC-s. Mõnel juhul saab MVC-d kasutada ka otse teenuste arendamiseks, millel on omad eelised ja puudused võrreldes WebAPI-ga. Allpool on näide teenusest, mis on arendatud MVC abil


Põhjusanalüüs
Domeenidevahelise probleemi põhipõhjus on see, et brauseril on madalad õigused mõlemale päringule ja tavaliselt lubatakse kõnesid ainult kohaliku domeeni ressurssidele, välja arvatud juhul, kui sihtserver ütleb talle selgesõnaliselt, et domeenideülesed kõned on lubatud.
Seega, kuigi domeenideülene probleem on põhjustatud brauseri käitumisest, on lahendus serveri poolel. Sest ei ole võimalik nõuda kõigilt klientidelt turvalisuse vähendamist.

lahus
Nii ASP.NET MVC kui ASP.NET Web API projektitüüpide puhul uurisin ja leidsin, et järgmine stsenaarium on teostatav.
ASP.NET MVC jaoks tuleb web.config lehele lisada ainult järgmine sisu


ASP.NET veebipõhiste API-de puhul tuleb lisaks ülaltoodud seadistustele lisada spetsiaalne disain, mis tähendab, et iga API kontrolleri jaoks lisatakse OPTIONS meetod, kuid ilma midagi tagastamata.
public string Options()
{
return null; HTTP 200 vastus tühja kehaga
}

Märkus: Seda funktsiooni saab teha ka uurimistööga ning võib olla parem kujundada see filtrina.





Eelmine:Lenovo ametlik kanali märkmik tsitaat 1. detsembril
Järgmine:Rakenda lihtne Http-teenus HttpListeneriga
 Üürileandja| Postitatud 01.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>
Kopeeri kood


Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com