Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 12584|Svare: 0

[Jquery] JSONP - Løsning av problemet med tilgang på tvers av domener i Ajax

[Kopier lenke]
Publisert på 28.12.2015 14:22:00 | | |

Jeg har ikke skrevet et essay på lenge, og jeg føler alltid at jeg ikke har tid, men faktisk er tid... Nok tull, for noen dager siden var det et nytt krav på jobben, som krevde at front-end-nettsiden skulle kalle backend-webtjenestemetoden asynkront for å returnere informasjon. Det finnes mange måter å implementere det på, dette eksempelet bruker jQuery+Ajax, etter fullføring er alt i orden å feilsøke lokalt, men det oppstår et problem etter distribusjon til serveren, og bakgrunnstjenestekallet svarer ikke, hva skjer? Koden har ikke endret seg mye, det eneste som har endret seg er URL-adressen i jQuerys ajax-metode. Kan det være at problemet her er at etter sjekk og feilsøking, viser det seg at den homologe policyen er årsaken, vi vet at Javascrip{filtering}t eller jQuery er en dynamisk skriptteknikk som ofte brukes i webfront-end-utvikling. I Javascrip{filtering}t finnes det en viktig sikkerhetsbegrensning kjent som "Same-Origin Policy". Denne policyen pålegger en viktig begrensning på innholdet på siden som Javascrip{filter}t-kode kan få tilgang til, det vil si at Javascrip{filtering}t kun kan få tilgang til innhold under samme domenenavn som dokumentet eller skriptet som inneholder det. Skript under forskjellige domener kan ikke få tilgang til hverandre, ikke engang underdomener. Når det gjelder den homologe strategien, kan leserne forklare den mer i detalj på Baidu, noe som ikke vil bli gjentatt her.



Men noen ganger er det uunngåelig å utføre tverr-domene operasjoner, og «homolog policy» er en begrensning, hva bør vi gjøre? La oss se på hvordan JSONP tverrdomene implementeres og diskutere prinsippet om JSONP tverrdomene.



JSONP nevnes her, så spurte noen hva forskjellen og forskjellen mellom det og JSON er, la oss ta en titt, Baidu Encyclopedia har følgende forklaring:

JSON (Javascrip{filtering}t Object Notation) er et lettvekts datautvekslingsformat. Den er basert på et delsett av Javascrip{filter}t (Standard ECMA-262 3. utgave - desember 1999). JSON bruker et fullstendig språkuavhengig tekstformat, men bruker også vaner som ligner på C-familien (inkludert C, C++, C#, Java, Javascrip, Perl, Python, osv.). Disse funksjonene gjør JSON til et ideelt språk for datautveksling. Lett å lese og skrive for mennesker, men også lett å tolke og generere med maskin (rask nettverksoverføring).

JSONP (JSON med utfylling) er et "bruksmønster" av JSON, som kan brukes til å løse problemet med tverrdomene datatilgang i vanlige nettlesere. På grunn av samme opprinnelsespolicy kan sider som vanligvis befinner seg på server1.example.com ikke kommunisere med servere som ikke er server1.example.com, med unntak av elementet <scrip{filter}t> i HTML. Ved å bruke denne åpne strategien med elementet <scrip{filter}t> kan nettsider hente JSON-data dynamisk generert fra andre kilder, og dette bruksmønsteret kalles JSONP. Dataene som fanges med JSONP er ikke JSON, men vilkårlig Javascrip{filter}t, som utføres med Javascrip{filter}t-oversetteren i stedet for å parses av JSON-parseren.



På dette tidspunktet bør det forstås at JSON er et lettvekts datautvekslingsformat, som xml, som brukes til å beskrive data mellom data. JSONP er en måte å bruke JSON-data på, og i stedet for å returnere et JSON-objekt, er det et javascrip{filtering}t-skript som inneholder et JSON-objekt.



Så hvordan fungerer JSONP? Vi vet at på grunn av begrensningene i samme opprinnelsespolicy, tillater XmlHttpRequest kun forespørsler om ressurser fra den nåværende kilden (domenenavn, protokoll, port). Tverrdomeneforespørsler er ikke mulig av sikkerhetsgrunner, men vi fant at når js-filer kalles på nettsider, påvirkes de verken av kryssdomene eller ikke, og tagger med attributtet "src" har tverrdomene-muligheter, som <scrip{filter}t>, <img>, ,<iframe>Hvis du vil lage en tverrdomene-forespørsel, gjør en tverrdomene-forespørsel ved å bruke scrip{filter}t-taggen i html, og returner scrip{filtering}t-koden som skal kjøres i svaret, hvor du kan bruke JSON direkte for å sende javascrip{filter}t-objektet. Det vil si å generere JSON-data på kryssdomene-serveren og deretter pakke det inn i et scrip{filtering}t-skript tilbake, noe som bryter gjennom begrensningene i samme-opprinnelsespolicyen og løser problemet med kryssdomene-tilgang.

La oss se på hvordan du kan oppnå dette:

Front-end-kode:






Foregående:Delegatverdier mellom Winform-former
Neste:Start flere Memcache-tjenester på samme Windows-maskin
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com