Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 12584|Válasz: 0

[Csípős] JSONP – Az Ajax területén a cross-domain hozzáférés problémájának megoldása

[Linket másol]
Közzétéve 2015. 12. 28. 14:22:00 | | |

Régóta nem írtam esszét, és mindig úgy érzem, nincs időm, de valójában az idő... Elég a hülyeségből, néhány nappal ezelőtt új követelmény jelent meg, amely előírta, hogy a front-end weboldal aszinkron módon hívja a backend Webservice módszert, hogy visszaküldje az információkat. Sokféleképpen lehet megvalósítani, ez a példa jQuery+Ajax rendszert használ, a befejezés után minden rendben van a helyi hibakereséshez, de a szerveren való telepítés után probléma van, és a háttérben lévő szolgáltatáshívás nem reagál, mi történik? A kód nem változott sokat, az egyetlen dolog, ami megváltozott, az URL cím a jQuery ajax módszerében. Lehet, hogy a probléma az, hogy ellenőrzés és hibakeresés után kiderül, hogy a homológ politika hibás, tudjuk, hogy a Javascrip{filtering}t vagy jQuery egy dinamikus szkript-technika, amelyet gyakran használnak webfront-end fejlesztésben. A Javascrip{filtering}t programban van egy fontos biztonsági korlátozás, amelyet "Ugyanaz eredetű szabályzatnak" neveznek. Ez a szabályzat fontos korlátozást szab az oldal tartalmára, amelyhez a Javascrip{filter}t kód hozzáférhet, azaz a Javascrip{filtering}t csak ugyanazon a domain néven érhető el, mint a dokumentum vagy a script, amely tartalmazza. A különböző domainek alatt lévő szkriptek nem férhetnek hozzá, még az aldomainek sem. A homológ stratégiával kapcsolatos olvasók részletesebben is elmagyarázhatják a Baidu-n, amit itt nem fogunk ismételni.



De néha elkerülhetetlen a területek közötti műveletek végrehajtása, és a "homológ politika" korlát, mit kellene tennünk? Nézzük meg, hogyan valósítják meg a JSONP cross-domain rendszerét, és beszéljük meg a JSONP cross-domain elvét.



Itt említik a JSONP-t, majd valaki megkérdezte, mi a különbség és különbség a JSON és között, nézzük meg, a Baidu enciklopédia a következő magyarázatot tartalmazza:

A JSON (Javascrip{filtering}t Object Notation) egy könnyű adatcsere formátum. A Javascrip{filter}t (Standard ECMA-262 3. kiadás - 1999. december) egy részhalmazán alapul. A JSON teljesen nyelvfüggetlen szövegformátumot használ, de hasonló szokásokat is alkalmaz a C családhoz (beleértve a C, C++, C#, Java, Javascrip, Perl, Python stb.). Ezek a funkciók a JSON-t ideális nyelvmé teszik az adatcseréhez. Könnyű olvasni és írni az embereknek, de géppel is könnyen értelmezhető és generálható (gyors hálózati átvitel).

A JSONP (JSON PAMP-olcsolással) a JSON "használati mintája", amely a főáramú böngészők cross-domain adathozzáférésének problémájának megoldására használható. Az azonos eredetű szabályzat miatt a server1.example.com-n található oldalak általában nem kommunikálhatnak olyan szerverekkel, amelyek nem server1.example.com, kivéve a HTML <scrip{filter}t> elemét. A <scrip{filter}t> elem nyílt stratégiájával a weboldalak dinamikusan generált JSON adatokat kaphatnak más forrásokból, és ezt a használati mintát JSONP-nek nevezik. A JSONP-vel rögzített adatok nem JSON, hanem tetszőleges Javascrip{filter}t, amelyet a Javascrip{filter}t fordítóval hajtanak végre, nem pedig a JSON parser.



Ezen a ponton meg kell érteni, hogy a JSON egy könnyű adatcsere formátum, mint az xml, amelyet az adatok közötti adatok leírására használnak. A JSONP egy módja a JSON adatok használatának, és a JSON objektum visszaadása helyett egy javascrip{filtering}t szkript, amely tartalmaz egy JSON objektumot.



Hogyan működik a JSONP? Tudjuk, hogy az azonos eredetű politika korlátai miatt az XmlHttpRequest csak a jelenlegi forrásból (domain név, protokoll, port) származó erőforrások kérését engedélyezi. A tartományok közötti kérések biztonsági okokból nem lehetségesek, de azt tapasztaltuk, hogy amikor a js fájlokat weboldalakon hívják, nem érinti őket a cross-domain vagy sem, és az "src" attribútumú címkék cross-domain képességekkel rendelkeznek, például <scrip{filter}t>, <img>,<iframe>Ha tartományokon át szeretnél kérni, akkor a html scrip{filter}t címkéjével küldj vissza a scrip{filtering}t kódot, amely a válaszban futtatható scrip{filtering}t kódot adja, amelyben közvetlenül a JSON-t segítségével továbbíthatod a javascrip{filter}t objektumot. Vagyis a JSON adat generálása a különböző tartományú szerveren, majd visszacsomagolja azokat egy scrip{filtering}t szkripté, ami áttöri az azonos eredetű politika korlátait, és megoldja a tartományok közötti hozzáférés problémáját.

Nézzük meg, hogyan lehet ezt elérni:

Front-end kód:






Előző:Delegált értékek a Winform űrlapok között
Következő:Indíts több Memcached szolgáltatást ugyanazon a Windows gépen
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com