Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 21428|Vastaus: 1

[WebAPI] Ongelmia ja ratkaisuja AJAX-verkkotunnusten välisiin kutsuihin ASP.NET MVC- tai WebAPI-palveluihin

[Kopioi linkki]
Julkaistu 1.12.2015 15.20.20 | | | |
Ongelman kuvaus
Kun verkkotunnusten välinen kutsu ASP.NET MVC:n tai Web APIn ASP.NET kirjoitetun palvelun, se muuttuu saavuttamattomaksi.
Lisääntymismenetelmä
  • Käytä mallipohjaa luodaksesi yksinkertaisimman ASP.NET Web API -projektin, debugaa se varmistaaksesi, että se toimii
  • Luo toinen projekti, jossa on vain yksi HTML-sivu, ja tee AJAX-kutsu
  • Avaa tämä sivu selaimessasi ja löydät seuraavan virheen (405: Menetelmä ei sallittu)

    Huomautus: Sama tilanne toistuu ASP.NET MVC:ssä. Joissain tapauksissa MVC:tä voidaan käyttää myös suoraan palveluiden kehittämiseen, mikä tuo omat etunsa ja haittansa verrattuna WebAPI:hin. Alla on esimerkki palvelusta, joka on kehitetty MVC:llä


Syyanalyysi
Perimmäinen syy verkkotunnusten väliseen ongelmaan on, että selaimella on alhaiset oikeudet molempiin pyyntöihin ja yleensä sallitaan puhelut vain paikallisen domainin resursseihin, ellei kohdepalvelin nimenomaisesti kerro, että verkkotunnusten väliset puhelut ovat sallittuja.
Siksi, vaikka verkkotunnusten välinen ongelma johtuu selaimen toiminnasta, ratkaisu löytyy palvelinpuolelta. Koska ei ole mahdollista vaatia kaikkia asiakkaita vähentämään turvallisuutta.

ratkaisu
Sekä ASP.NET MVC- että ASP.NET Web API -projektityypeille tein tutkimusta ja totesin, että seuraava skenaario on toteuttamiskelpoinen.
ASP.NET MVC:tä varten sinun tarvitsee vain lisätä seuraava sisältö web.config-tiedostoon


ASP.NET Web API:lle yllä mainittujen asetusten lisäksi täytyy lisätä erityinen suunnittelu, joka on lisätä OPTIONS-metodi jokaiselle API-ohjaimelle, mutta ilman palautusta mitään.
public string Options()
{
return null; HTTP 200 -vastaus tyhjällä runko
}

Huomautus: Tämä toiminto voidaan tehdä myös jonkin verran tutkimusta, ja voi olla parempi suunnitella se suodattimeksi.





Edellinen:Lenovon virallinen kanavan muistikirjan lainaus 1. joulukuuta
Seuraava:Toteuta yksinkertainen Http-palvelu HttpListenerin avulla
 Vuokraisäntä| Julkaistu 1.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>
Kopioi koodi


Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com