Kas yra Cors?
CORS yra W3C standartas, reiškiantis "Cross-origin resource sharing". Tai leidžia naršyklei pateikti XMLHttpRequest užklausas kryžminės kilmės serveriams, taip įveikiant apribojimą, kad AJAX gali būti naudojamas tik vienodai.
1. Įvadas
CORS reikalingas ir naršyklės, ir serverio palaikymas. Šiuo metu visos naršyklės palaiko šią funkciją, o IE naršyklė negali būti žemesnė nei IE10.
Visą CORS ryšio procesą naršyklė užbaigia automatiškai ir nereikia naudotojo dalyvavimo. Kūrėjams CORS komunikacija niekuo nesiskiria nuo homologinio AJAX ryšio, o kodas yra visiškai tas pats. Kai naršyklė nustato, kad AJAX užklausa kerta šaltinį, ji automatiškai pridės papildomos antraštės informacijos, o kartais ir dar vieną papildomą užklausą, tačiau vartotojas to nepajus.
Todėl raktas į CORS ryšį yra serveris. Kol serveris įdiegia CORS sąsają, jis gali bendrauti tarp šaltinių.
Tiesą sakant, žiniatinklio serverio programos (pvz., ASP.NET ar PHP ir kt.) negali atskirti ir nevaldys, ar gaunama Http užklausa yra kryžminio domeno Ajax užklausa.CORS sukurtas šiai problemai išspręsti, o W3C pasirinktinis CORS standartas suteikia naršyklėms mechanizmą, leidžiantį Ajax kryžmines domeno užklausas.
2: Vietinis JS Ajax užklausos kodas
Kadangi nenoriu nurodyti jQuery, su js inkapsuliavau šiuos metodus:
Ajax prašo sąsajos testų ir randa klaidą taip:
Trečia: nustatykite valdiklio metodą, kad būtų leidžiamas kryžminis domenas
Šiaip sauVisi leidžiamiValdiklis arba API metodas yra kryžminis domenas, faile web.configsistema.žiniatinklio serverisPo mazgu pridedama ši konfigūracija:
Aukščiau pateiktas rezultatas nėra toks, kokio norėjome! Jei norime, kad tik domeno vardas galėtų pasiekti vieną iš mūsų sąsajų visuose domenuose, turime apibrėžti funkciją, kuri atrodo taip:
Kelių domenų prieigos teisių nustatymo kodas yra ši pastraipa HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", kilmė);
Mes nustatome charakteristikas valdiklio metodo viršuje taip:
Mes vėl inicijuojame "Ajax" užklausą su rezultatu, kaip parodyta žemiau:
API sąsajos ištekliai iš kitų mūsų svetainių gali būti sėkmingai pasiekiami.
(Pabaiga)
|