Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 21428|Svar: 1

[WebAPI] Problemer og løsninger for AJAX tværdomænekald til ASP.NET MVC- eller WebAPI-tjenester

[Kopier link]
Opslået på 01/12/2015 15.20.20 | | | |
Problembeskrivelse
Når et cross-domain kald ASP.NET MVC eller en tjeneste skrevet ASP.NET Web API, bliver det utilgængeligt.
Reproduktionsmetode
  • Brug en skabelon til at oprette et simplest ASP.NET Web API-projekt, fejlfind det for at sikre, at det virker
  • Opret et andet projekt med kun én HTML-side og lav et AJAX-kald
  • Åbn denne side i din browser, og du vil finde følgende fejl (405: Metode ikke tilladt)

    Bemærk: Den samme situation opstår i ASP.NET trafikulykke. I nogle tilfælde kan MVC også bruges direkte til at udvikle tjenester, hvilket har sine egne fordele og ulemper sammenlignet med WebAPI. Nedenfor er et eksempel på en tjeneste udviklet ved brug af MVC


Årsagsanalyse
Den grundlæggende årsag til det tværdomæne-problem er, at browseren har lave privilegier på begge forespørgsler og normalt kun tillader kald til ressourcer i det lokale domæne, medmindre målserveren eksplicit fortæller den, at tværdomænekald er tilladt.
Derfor, selvom cross-domain-problemet skyldes browserens adfærd, ligger løsningen på serversiden. Fordi det ikke er muligt at kræve, at alle klienter reducerer sikkerheden.

opløsning
For både ASP.NET MVC- og ASP.NET Web API-projekttyper lavede jeg noget research og fastslog, at følgende scenarie er muligt.
For ASP.NET MVC behøver du kun at tilføje følgende indhold til web.config


For ASP.NET Web API'er skal der ud over ovenstående indstillinger tilføjes et særligt design, nemlig at tilføje en OPTIONS-metode for hver API-controller, men uden at returnere noget.
offentlige streng-optioner()
{
returner null; HTTP 200-svar med tom krop
}

Bemærk: Denne funktion kan også udføres med lidt research, og det kan være bedre at designe den som et filter.





Tidligere:Lenovos officielle kanalnotebook-citat den 1. december
Næste:Implementér en simpel HTTP-tjeneste med HttpListener
 Udlejer| Opslået på 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>
Kopier kode


Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com