Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 12584|Svar: 0

[Jquery] JSONP - Lösning på problemet med domänöverskridande åtkomst i Ajax

[Kopiera länk]
Publicerad på 2015-12-28 14:22:00 | | |

Jag har inte skrivit en uppsats på länge, och jag känner alltid att jag inte har tid, men i själva verket är tid... Nog med nonsens, för några dagar sedan fanns det ett nytt krav på jobbet, som krävde att frontend-webbsidan skulle anropa backend-webbtjänstmetoden asynkront för att returnera information. Det finns många sätt att implementera det, detta exempel använder jQuery+Ajax, efter att det är klart är allt okej att felsöka lokalt, men det uppstår ett problem efter att ha distribuerat till servern och bakgrundsserviceanropet svarar inte, vad är det som händer? Koden har inte förändrats mycket, det enda som har ändrats är URL-adressen i jQuerys ajax-metod. Kan det vara så att problemet här är att efter kontroll och felsökning visar det sig att den homologa policyn är fel, vi vet att Javascrip{filtering}t eller jQuery är en dynamisk skriptningsteknik som ofta används i webbfront-end-utveckling. I Javascrip{filtering}t finns en viktig säkerhetsbegränsning som kallas "Same-Origin Policy". Denna policy innebär en viktig begränsning på innehållet på sidan som Javascrip{filter}t-koden kan nå, dvs. Javascrip{filtering}t kan endast komma åt innehåll under samma domännamn som dokumentet eller skriptet som innehåller det. Skript under olika domäner kan inte komma åt varandra, inte ens deldomäner. När det gäller den homologa strategin kan läsare förklara den mer i detalj på Baidu, vilket inte kommer att upprepas här.



Men ibland är det oundvikligt att utföra domänöverskridande operationer, och den "homologa policyn" är en begränsning, vad bör vi göra? Låt oss titta på hur JSONP cross-domain implementeras och diskutera principen för JSONP cross-domain.



JSONP nämns här, sedan frågade någon, vad är skillnaden och skillnaden mellan det och JSON, låt oss ta en titt, Baidu Encyclopedia har följande förklaring:

JSON (Javascrip{filtering}t Object Notation) är ett lättviktigt databytesformat. Den baseras på en delmängd av Javascrip{filter}t (Standard ECMA-262 3:e upplagan - december 1999). JSON använder ett helt språkoberoende textformat, men använder också vanor liknande C-familjen (inklusive C, C++, C#, Java, Javascrip, Perl, Python, etc.). Dessa funktioner gör JSON till ett idealiskt språk för datautbyte. Lätt att läsa och skriva av människor, men också lätt att tolka och generera av maskin (snabb nätverksöverföring).

JSONP (JSON med utfyllnad) är ett "användningsmönster" av JSON, som kan användas för att lösa problemet med domänöverskridande dataåtkomst i vanliga webbläsare. På grund av policyn om samma ursprung kan sidor som vanligtvis finns på server1.example.com inte kommunicera med servrar som inte är server1.example.com, med undantag för <scrip{filter}t> element i HTML. Med denna öppna strategi med elementet <scrip{filter}t> kan webbsidor få JSON-data dynamiskt genererad från andra källor, och detta användningsmönster kallas JSONP. Den data som fångas med JSONP är inte JSON, utan godtycklig Javascrip{filter}t, som exekveras med Javascrip{filter}t-översättaren istället för att tolkas av JSON-parsern.



Vid denna punkt bör det förstås att JSON är ett lättviktigt databytesformat, likt xml, som används för att beskriva data mellan data. JSONP är ett sätt att använda JSON-data, och istället för att returnera ett JSON-objekt är det ett javascrip{filtering}t-skript som innehåller ett JSON-objekt.



Så hur fungerar JSONP? Vi vet att på grund av begränsningarna i samma ursprungspolicy tillåter XmlHttpRequest endast förfrågningar om resurser från den aktuella källan (domännamn, protokoll, port). Domänöverskridande förfrågningar är inte möjliga av säkerhetsskäl, men vi fann att när js-filer anropas på webbsidor påverkas de inte av domänöverskridande eller inte, och taggar med attributet "src" har domänöverskridande funktioner, såsom <scrip{filter}t>, <img>, ,<iframe>Om du vill göra en domänöverskridande förfrågan, gör en domänöverskridande begäran genom att använda taggen scrip{filter}t i html och returnera koden scrip{filtering}t som ska köras i svaret, där du direkt kan använda JSON för att skicka objektet javascrip{filter}t. Det vill säga, generera JSON-data på den domänöverskridande servern och sedan paketera in det i ett scrip{filtering}t-skript tillbaka, vilket bryter igenom begränsningarna i samma ursprungspolicy och löser problemet med domänöverskridande åtkomst.

Låt oss titta på hur du kan uppnå det:

Front-end-kod:






Föregående:Delegera värden mellan Winform-formulär
Nästa:Starta flera Memcache-tjänster på samma Windows-dator
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com