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

Skats: 12584|Atbildi: 0

[Jquery] JSONP - Starpdomēnu piekļuves problēmas risināšana Ajax

[Kopēt saiti]
Publicēts 28.12.2015 14:22:00 | | |

Es ilgu laiku neesmu rakstījis eseju, un man vienmēr šķiet, ka man nav laika, bet patiesībā laiks ir... Pietiekami muļķības, pirms dažām dienām darbā bija jauna prasība, kas prasīja priekšgala tīmekļa lapai asinhroni izsaukt aizmugures tīmekļa pakalpojuma metodi, lai atgrieztu informāciju. Ir daudz veidu, kā to īstenot, šajā piemērā tiek izmantots jQuery + Ajax, pēc pabeigšanas viss ir kārtībā, lai atkļūdotu lokāli, bet pēc izvietošanas serverī rodas problēma, un fona pakalpojuma zvans nereaģē, kas notiek? Kods nav daudz mainījies, vienīgais, kas ir mainījies, ir URL adrese jQuery ajax metodē. Vai varētu būt, ka problēma šeit ir tāda, ka pēc pārbaudes un atkļūdošanas izrādās, ka vainīga ir homologā politika, mēs zinām, ka Javascrip{filtering}t vai jQuery ir dinamiska skriptēšanas tehnika, ko bieži izmanto tīmekļa priekšgala izstrādē. Javascrip{filtering}t ir svarīgs drošības ierobežojums, kas pazīstams kā "Vienas izcelsmes politika". Šī politika nosaka svarīgu ierobežojumu tās lapas saturam, kurai var piekļūt Javascrip{filter}t kods, t.i., Javascrip{filtering}t var piekļūt saturam tikai ar to pašu domēna nosaukumu kā dokuments vai skripts, kas to satur. Dažādu domēnu skripti nevar piekļūt viens otram, pat ne apakšdomēniem. Attiecībā uz homologo stratēģiju lasītāji to var sīkāk izskaidrot Baidu, kas šeit netiks atkārtots.



Bet dažreiz ir neizbēgami veikt starpdomēnu operācijas, un "homologā politika" ir ierobežojums, kas mums jādara? Apskatīsim, kā tiek īstenots JSONP starpdomēns, un apspriedīsim JSONP starpdomēnu principu.



Šeit tiek pieminēts JSONP, tad kāds jautāja, kāda ir atšķirība un atšķirība starp to un JSON, apskatīsim, Baidu enciklopēdijai ir šāds skaidrojums:

JSON (Javascrip{filtering}t Object Notation) ir viegls datu apmaiņas formāts. Tas ir balstīts uz Javascrip{filter}t apakškopu (Standard ECMA-262 3rd Edition - December 1999). JSON izmanto pilnīgi no valodas neatkarīgu teksta formātu, bet izmanto arī C ģimenei līdzīgus ieradumus (ieskaitot C, C++, C#, Java, Javascrip, Perl, Python utt.). Šīs funkcijas padara JSON par ideālu valodu datu apmaiņai. Viegli lasāms un rakstāms cilvēkiem, bet arī viegli parsējams un ģenerējams ar mašīnu (ātra tīkla pārraide).

JSONP (JSON ar polsterējumu) ir JSON "lietošanas modelis", ko var izmantot, lai atrisinātu starpdomēnu datu piekļuves problēmu galvenajās pārlūkprogrammās. Pateicoties vienas izcelsmes politikai, lapas, kas parasti atrodas server1.example.com, nevar sazināties ar serveriem, kas nav server1.example.com, izņemot HTML elementu <scrip{filter}t>. Izmantojot šo elementa <scrip{filter}t> atvērto stratēģiju, tīmekļa lapas var iegūt JSON datus, kas dinamiski ģenerēti no citiem avotiem, un šis lietošanas modelis ir pazīstams kā JSONP. Ar JSONP iegūtie dati nav JSON, bet patvaļīgs Javascrip{filter}t, kas tiek izpildīts ar Javascrip{filter}t tulkotāju, nevis parsēts ar JSON parsētu.



Šajā brīdī jāsaprot, ka JSON ir viegls datu apmaiņas formāts, piemēram, xml, ko izmanto, lai aprakstītu datus starp datiem. JSONP ir veids, kā izmantot JSON datus, un tā vietā, lai atgrieztu JSON objektu, tas ir javascrip{filtering}t skripts, kas satur JSON objektu.



Tātad, kā darbojas JSONP, mēs zinām, ka vienas izcelsmes politikas ierobežojumu dēļ XmlHttpRequest atļauj tikai resursu pieprasījumus no pašreizējā avota (domēna nosaukums, protokols, ports). Starpdomēnu pieprasījumi nav iespējami drošības apsvērumu dēļ, taču mēs konstatējām, ka, izsaucot js failus tīmekļa lapās, tos neietekmē starpdomēni vai nē, un tagiem ar atribūtu "src" ir starpdomēnu iespējas, piemēram, <scrip{filter}t>, <img>, ,<iframe>Ja vēlaties veikt starpdomēnu pieprasījumu, veiciet starpdomēnu pieprasījumu, izmantojot html tagu scrip{filter}t, un atgrieziet atbildē izpildāmo scrip{filtering}t kodu, kurā varat tieši izmantot JSON, lai nodotu javascrip{filter}t objektu. Tas ir, ģenerējot JSON datus starpdomēnu serverī un pēc tam iesaiņojot tos scrip{filtering}t skriptā atpakaļ, kas pārkāpj vienas izcelsmes politikas ierobežojumus un atrisina starpdomēnu piekļuves problēmu.

Apskatīsim, kā to sasniegt:

Priekšgala kods:






Iepriekšējo:Vērtību deleģēšana starp Winform veidlapām
Nākamo:Sāciet vairākus Memcached pakalpojumus vienā Windows datorā
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