Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 21428|Atbildi: 1

[Tīmekļa API] Problēmas un risinājumi AJAX starpdomēnu zvaniem uz ASP.NET MVC vai WebAPI pakalpojumiem

[Kopēt saiti]
Publicēts 01.12.2015 15:20:20 | | | |
Problēmas apraksts
Kad starpdomēnu izsaukums ASP.NET MVC vai pakalpojumu, kas rakstīts ASP.NET Web API, tas kļūst nepieejams.
Reprodukcijas metode
  • Izmantojiet veidni, lai izveidotu vienkāršāko ASP.NET Web API projektu, atkļūdojiet to, lai pārliecinātos, ka tas darbojas
  • Izveidojiet citu projektu ar tikai vienu HTML lapu un veiciet AJAX zvanu
  • Atveriet šo lapu savā pārlūkprogrammā un atradīsit šādu kļūdu (405: metode nav atļauta)

    Piezīme: Tāda pati situācija ir ASP.NET MVC. Dažos gadījumos MVC var izmantot arī tieši pakalpojumu izstrādei, kam ir savas priekšrocības un trūkumi salīdzinājumā ar WebAPI. Zemāk ir piemērs pakalpojumam, kas izstrādāts, izmantojot MVC


Cēloņu analīze
Galvenais starpdomēnu problēmas iemesls ir tas, ka pārlūkprogrammai ir zemas privilēģijas abos pieprasījumos un parasti atļauj zvanus tikai uz vietējā domēna resursiem, ja vien mērķa serveris skaidri nenorāda, ka starpdomēnu zvani ir atļauti.
Tāpēc, lai gan starpdomēnu problēmu izraisa pārlūkprogrammas uzvedība, risinājums ir servera pusē. Jo nav iespējams pieprasīt visiem klientiem samazināt drošību.

šķīdums
Gan ASP.NET MVC, gan ASP.NET Web API projektu tipiem es veicu dažus pētījumus un noteiku, ka šāds scenārijs ir iespējams.
Lai ASP.NET MVC, tīmeklī jāpievieno tikai šāds saturs.config


ASP.NET Web API papildus iepriekš minētajiem iestatījumiem ir jāpievieno īpašs dizains, kas ir pievienot OPTIONS metodi katram API kontrolierim, bet neko neatgriežot.
publiskā virkne Opcijas()
{
atgriezt null; HTTP 200 atbilde ar tukšu pamattekstu
}

Piezīme: Šo funkciju var veikt arī ar dažiem pētījumiem, un var būt labāk to izstrādāt kā filtru.





Iepriekšējo:Lenovo oficiālais kanāla piezīmjdatoru citāts 1. decembrī
Nākamo:Vienkārša Http pakalpojuma ieviešana ar HttpListener
 Saimnieks| Publicēts 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>
Kopēt kodu


Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com