Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 12584|Odpověď: 0

[Jquery] JSONP - Řešení problému přístupu přes domény v Ajaxu

[Kopírovat odkaz]
Zveřejněno 28.12.2015 14:22:00 | | |

Dlouho jsem nenapsal esej a vždycky mám pocit, že nemám čas, ale ve skutečnosti čas je... Dost nesmyslů, před pár dny byla nová podmínka, která vyžadovala, aby front-end webová stránka volala backendovou webovou službu asynchronně a vracela informace. Existuje mnoho způsobů, jak to implementovat, tento příklad používá jQuery+Ajax, po dokončení je vše v pořádku ladit lokálně, ale po nasazení na server nastane problém a volání na pozadí není responzivní, co se děje? Kód se moc nezměnil, jediná věc, která se změnila, je URL adresa v jQuery metodě ajax. Může být problémem to, že po kontrole a ladění se ukáže, že chybná je homologní politika, víme, že Javascrip{filtering}t nebo jQuery je dynamická skriptovací technika často používaná ve webovém front-end vývoji. V Javascrip{filtering}t existuje důležité bezpečnostní omezení známé jako "Politika stejného původu". Tato politika ukládá důležité omezení na obsah stránky, ke kterému má přístup kód Javascrip{filter}t, tj. Javascrip{filtering}t může přistupovat pouze k obsahu pod stejným doménovým jménem jako dokument nebo skript, který jej obsahuje. Skripty pod různými doménami se k sobě navzájem nemohou připojit, ani k subdoménám. Co se týče homologické strategie, čtenáři ji mohou podrobněji vysvětlit na Baidu, což zde nebude opakovano.



Ale někdy je nevyhnutelné provádět operace napříč doménami a "homologní politika" je omezením, co bychom měli dělat? Podívejme se, jak je implementováno JSONP cross-domain a proberme princip JSONP cross-domain.



JSONP je zde zmíněn, pak se někdo zeptal, jaký je rozdíl a rozdíl mezi ním a JSON, podívejme se na to, Baidu Encyclopedia má následující vysvětlení:

JSON (Javascrip{filtering}t Object Notation) je lehký formát pro výměnu dat. Je založen na podmnožině Javascrip{filter}t (Standard ECMA-262 3. vydání – prosinec 1999). JSON používá zcela jazykově nezávislý textový formát, ale také používá zvyky podobné rodině C (včetně C, C++, C#, Java, Javascrip, Perl, Python atd.). Tyto vlastnosti činí z JSON ideální jazyk pro výměnu dat. Snadno čitelný a zapisovatelný pro lidi, ale také snadno rozpracovatelný a generovaný strojem (rychlý přenos přes síť).

JSONP (JSON s paddingem) je "vzorec používání" JSON, který lze použít k řešení problému přístupu k datům napříč doménami v běžných prohlížečích. Kvůli politice stejného původu nemohou stránky obecně umístěné na server1.example.com komunikovat se servery, které nejsou server1.example.com, s výjimkou prvku <scrip{filter}t> v HTML. Použitím této otevřené strategie prvku <scrip{filter}t> mohou webové stránky dynamicky generovat JSON data z jiných zdrojů a tento vzor používání je známý jako JSONP. Data zachycená pomocí JSONP nejsou JSON, ale libovolný Javascrip{filter}t, který je vykonáván pomocí překladače Javascrip{filter}t místo toho, aby byl parsován pomocí JSON parseru.



V tomto bodě je třeba pochopit, že JSON je lehký formát pro výměnu dat, podobně jako xml, který se používá k popisu dat mezi daty. JSONP je způsob, jak využít JSON data, a místo vrácení JSON objektu je to skript javascrip{filtering}t, který obsahuje JSON objekt.



Jak tedy JSONP funguje? Víme, že kvůli omezením politiky stejného původu XmlHttpRequest povoluje požadavky na zdroje pouze z aktuálního zdroje (doménové jméno, protokol, port). Požadavky přes domény nejsou z bezpečnostních důvodů možné, ale zjistili jsme, že když jsou js soubory volány na webových stránkách, nejsou ovlivněny ani ne-doménovým přechodem, a tagy s atributem "src" mají možnosti cross-domain funkce, jako jsou <scrip{filter}t>, <img>, ,<iframe>Pokud chcete vytvořit požadavek napříč doménami, vytvořte požadavek napříč doménami pomocí tagu scrip{filter}t v html a vraťte kód scrip{filtering}t, který se vykoná v odpovědi, kde můžete přímo použít JSON k předání objektu javascrip{filter}t. To znamená, že generujete JSON data na serveru napříč doménami a poté je zabalíte zpět do skriptu scrip{filtering}t, který prolomí omezení politiky stejného původu a řeší problém přístupu napříč doménami.

Podívejme se, jak toho dosáhnout:

Front-end kód:






Předchozí:Hodnoty delegátů mezi formami Winform
Další:Spusť více Memcached služeb na stejném Windows stroji
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com