Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 21428|Válasz: 1

[WebAPI] Problémák és megoldások az AJAX cross-domain hívásokhoz ASP.NET MVC vagy WebAPI szolgáltatásokhoz

[Linket másol]
Közzétéve 2015. 12. 01. 15:20:20 | | | |
Problémaleírás
Amikor egy domének közötti hívás ASP.NET MVC-t vagy egy webes API-ASP.NET írt szolgáltatást, elérhetetlenné válik.
Szaporodási módszer
  • Használj egy sablont egy egyszerűbb ASP.NET Web API projekt létrehozásához, hibáztasd meg, hogy megbizonyosodj róla, működik
  • Hozz létre egy másik projektet csak egy HTML oldallal, és indíts AJAX hívást
  • Nyissa meg ezt az oldalt a böngészőjében, és a következő hibát találja (405: Method Not Allowed)

    Megjegyzés: Ugyanez a helyzet ASP.NET MVC-ben is. Bizonyos esetekben az MVC közvetlenül is használható szolgáltatások fejlesztésére, amelynek megvannak a maga előnyei és hátrányai a WebAPI-hoz képest. Az alábbiakban egy példa egy MVC-vel fejlesztett szolgáltatásra


Ok-elemzés
A cross-domain probléma alapvető oka az, hogy a böngésző mindkét kérésre alacsony jogosultsággal rendelkezik, és általában csak a helyi tartományban lévő erőforrásokhoz engedélyez hívásokat, hacsak a célszerver kifejezetten nem jelzi neki, hogy a tartományok közötti hívások engedélyezettek.
Ezért, bár a cross-domain problémát a böngésző viselkedése okozza, a megoldás a szerver oldalán van. Mert nem lehetséges minden kliensnek megkövetelni a biztonság csökkentését.

megoldás
Mind ASP.NET MVC, mind ASP.NET Web API projekttípusok esetében utánanéztem, és megállapítottam, hogy a következő forgatókönyv megvalósítható.
ASP.NET MVC-hez csak a következő tartalmat kell hozzáadni a web.config oldalra


ASP.NET Web API-k esetében a fent említett beállításokon túl speciális tervezést kell hozzáadni, amely minden API-vezérlőhöz egy OPTIONS metódust ad, de semmi visszaadás nélkül.
public string Options()
{
return null; HTTP 200 válasz üres testtel
}

Megjegyzés: Ez a funkció kutatással is megoldható, és talán jobb lehet szűrőként megtervezni.





Előző:A Lenovo hivatalos csatorna jegyzetfüzete idézete december 1-jén
Következő:Egyszerű Http szolgáltatás megvalósítása a HttpListenerrel
 Háziúr| Közzétéve 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>
Kód másolása


Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com