Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 12584|Svar: 0

[Jquery] JSONP - Løsning af problemet med krydsdomæneadgang i Ajax

[Kopier link]
Opslået på 28/12/2015 14.22.00 | | |

Jeg har ikke skrevet et essay i lang tid, og jeg føler altid, at jeg ikke har tid, men faktisk er tid... Nok vrøvl, for et par dage siden var der et nyt krav på arbejdet, som krævede, at front-end websiden skulle kalde backend Webservice-metoden asynkront for at returnere information. Der er mange måder at implementere det på, dette eksempel bruger jQuery+Ajax, efter færdiggørelsen er alt OK at fejlfinde lokalt, men der opstår et problem efter udrulning til serveren, og baggrundsservicekaldet reagerer ikke, hvad foregår der så? Koden har ikke ændret sig meget, det eneste der er ændret, er URL-adressen i jQuerys ajax-metode. Kan det være, at problemet her er, at efter kontrol og fejlfinding viser det sig, at den homologe politik er skyld i det, vi ved, at Javascrip{filtering}t eller jQuery er en dynamisk scripting-teknik, der ofte bruges i webfront-end-udvikling. I Javascrip{filtering}t findes der en vigtig sikkerhedsbegrænsning kendt som "Same-Origin Policy". Denne politik pålægger en vigtig begrænsning på indholdet af siden, som Javascrip{filter}t-kode kan tilgå, dvs. Javascrip{filtering}t kan kun tilgå indhold under samme domænenavn som dokumentet eller scriptet, der indeholder det. Scripts under forskellige domæner kan ikke tilgå hinanden, ikke engang underdomæner. Med hensyn til den homologe strategi kan læserne forklare den mere detaljeret på Baidu, hvilket ikke vil blive gentaget her.



Men nogle gange er det uundgåeligt at udføre tværdomæneoperationer, og den "homologe politik" er en begrænsning, hvad skal vi gøre? Lad os se på, hvordan JSONP cross-domain implementeres, og diskutere princippet om JSONP cross-domain.



JSONP nævnes her, og så spurgte nogen, hvad forskellen og forskellen er mellem det og JSON, lad os tage et kig, Baidu Encyclopedia har følgende forklaring:

JSON (Javascrip{filtering}t Object Notation) er et letvægts dataudvekslingsformat. Den er baseret på et undersæt af Javascrip{filter}t (Standard ECMA-262 3. udgave - december 1999). JSON bruger et fuldstændigt sproguafhængigt tekstformat, men bruger også vaner, der ligner C-familien (herunder C, C++, C#, Java, Javascrip, Perl, Python osv.). Disse funktioner gør JSON til et ideelt sprog til dataudveksling. Let at læse og skrive for mennesker, men også let at analysere og generere af maskinen (hurtig netværkstransmission).

JSONP (JSON med udfyldning) er et "brugsmønster" af JSON, som kan bruges til at løse problemet med tværdomæne dataadgang i mainstream browsere. På grund af samme oprindelsespolitik kan sider, der generelt er placeret på server1.example.com, ikke kommunikere med servere, der ikke er server1.example.com, med undtagelse af elementet <scrip{filter}t> i HTML. Ved at bruge denne åbne strategi med elementet <scrip{filter}t> kan websider få JSON-data dynamisk genereret fra andre kilder, og dette brugsmønster kaldes JSONP. De data, der indfanges med JSONP, er ikke JSON, men vilkårlig Javascrip{filter}t, som udføres med Javascrip{filter}t-oversætteren i stedet for at blive parset af JSON-parseren.



På dette tidspunkt bør det forstås, at JSON er et letvægts dataudvekslingsformat, ligesom xml, der bruges til at beskrive data mellem data. JSONP er en måde at bruge JSON-data på, og i stedet for at returnere et JSON-objekt, er det et javascrip{filtering}t-script, der indeholder et JSON-objekt.



Så hvordan fungerer JSONP? Vi ved, at på grund af begrænsningerne i samme-oprindelse-politikken tillader XmlHttpRequest kun anmodninger om ressourcer fra den aktuelle kilde (domænenavn, protokol, port). Cross-domain forespørgsler er ikke mulige af sikkerhedsmæssige årsager, men vi fandt, at når js-filer kaldes på websider, påvirkes de ikke af cross-domain eller ej, og tags med attributten "src" har cross-domain funktioner, såsom <scrip{filter}t>, <img>, ,<iframe>Hvis du vil lave en cross-domain request, lav en cross-domain request ved at bruge scrip{filter}t-tagget i html, og returner scrip{filtering}t-koden til at blive udført i svaret, hvor du direkte kan bruge JSON til at sende javascrip{filter}t-objektet. Det vil sige, at generere JSON-data på cross-domain serveren og derefter pakke dem ind i et scrip{filtering}t script tilbage, hvilket bryder igennem begrænsningerne i samme-oprindelsespolitikken og løser problemet med cross-domain adgang.

Lad os se på, hvordan man opnår det:

Front-end kode:






Tidligere:Delegerede værdier mellem Winform-former
Næste:Start flere Memcache-tjenester på den samme Windows-maskine
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com