Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 21428|Svare: 1

[WebAPI] Problemer og løsninger for AJAX tverrdomenekall til ASP.NET MVC- eller WebAPI-tjenester

[Kopier lenke]
Publisert på 01.12.2015 15:20:20 | | | |
Problembeskrivelse
Når et tverrdomenekall ASP.NET MVC eller en tjeneste skrevet ASP.NET Web API, blir det utilgjengelig.
Reproduksjonsmetode
  • Bruk en mal for å lage et enklest ASP.NET Web API-prosjekt, feilsøk det for å sikre at det fungerer
  • Lag et annet prosjekt med bare én HTML-side og lag et AJAX-kall
  • Åpne denne siden i nettleseren din, og du vil finne følgende feil (405: Metode ikke tillatt)

    Merk: Den samme situasjonen oppstår i ASP.NET trafikkulykke. I noen tilfeller kan MVC også brukes direkte til å utvikle tjenester, noe som har sine egne fordeler og ulemper sammenlignet med WebAPI. Nedenfor er et eksempel på en tjeneste utviklet ved bruk av MVC


Årsaksanalyse
Den grunnleggende årsaken til det tverrdomene-problemet er at nettleseren har lave rettigheter på begge forespørsler og vanligvis bare tillater kall til ressurser i det lokale domenet, med mindre målserveren eksplisitt forteller den at kryssdomene-kall er tillatt.
Derfor, selv om kryssdomeneproblemet skyldes nettleserens oppførsel, ligger løsningen på serversiden. Fordi det ikke er mulig å kreve at alle klienter reduserer sikkerheten.

løsning
For både ASP.NET MVC- og ASP.NET Web API-prosjekttyper gjorde jeg litt research og konkluderte med at følgende scenario er gjennomførbart.
For ASP.NET MVC trenger du bare å legge til følgende innhold i web.config


For ASP.NET Web API-er, i tillegg til innstillingene ovenfor, må det legges til et spesielt design, nemlig å legge til en OPTIONS-metode for hver API-kontroller, men uten å returnere noe.
offentlige streng-alternativer()
{
returner null; HTTP 200-respons med tom kropp
}

Merk: Denne funksjonen kan også gjøres med litt research, og det kan være bedre å designe den som et filter.





Foregående:Lenovos offisielle kanalnotatbok sitat 1. desember
Neste:Implementer en enkel Http-tjeneste med HttpListener
 Vert| Publisert 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 koden


Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com