Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A JSON Padding (JSONP) egy olyan mechanizmus, amely lehetővé teszi a webhelyek közötti szkriptek támogatását a webböngészőkben. A JSONP célja, hogy a webböngészők olyan webhelyről tölthessenek be szkripteket, amely eltér az aktuális betöltött dokumentumtól. A mechanizmus úgy működik, hogy a JSON üzenetet egy felhasználó által definiált visszahívási függvény nevével egészíti ki, ahogyan az az alábbi példában látható.
callback({"a" = \\"b\\"});
Az előző példában a JSON hasznos adata {"a" = \\"b\\"} függvényhívásba van csomagolva. callback A visszahívási függvénynek már definiálva kell lennie az aktuális weboldalon. A JSONP-válasz tartalomtípusa: application/javascript.
A JSONP nincs automatikusan engedélyezve. Az engedélyezéshez állítsa be az javascriptCallbackEnabled attribútumot true az egyik SZABVÁNYOS HTTP-végponton (WebHttpEndpoint vagy WebScriptEndpoint) az alábbi példában látható módon.
<system.serviceModel>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" javascriptCallbackEnabled="true"/>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
A visszahívási függvény neve megadható egy visszahívás nevű lekérdezési változóban, ahogyan az az alábbi URL-címen látható.
http://baseaddress/Service/RestService?callback=functionName
A meghíváskor a szolgáltatás az alábbihoz hasonló választ küld.
functionName({"root":"Something"});
A visszahívási függvény nevét úgy is megadhatja, hogy a szolgáltatásosztályra alkalmazza az JavascriptCallbackBehaviorAttribute alábbi példában látható módon.
[ServiceContract]
[JavascriptCallbackBehavior(ParameterName = "$callback")]
public class Service1
{
[OperationContract]
[WebGet(ResponseFormat=WebMessageFormat.Json)]
public string GetData()
{
}
}
A korábban bemutatott szolgáltatás esetében a kérés a következőhöz hasonlóan néz ki.
http://baseaddress/Service/RestService?$callback=anotherFunction
A meghíváskor a szolgáltatás a következőkkel válaszol.
anotherFunction ({"root":"Something"});
HTTP-állapotkódok
A 200-astól eltérő HTTP-állapotkódokkal rendelkező JSONP-válaszok közé tartozik egy második paraméter, amely a HTTP-állapotkód numerikus ábrázolását tartalmazza, ahogyan az alábbi példában is látható.
anotherFunction ({"root":"Something"}, 201);
Érvényesítés
A JSONP engedélyezésekor a következő érvényesítések lesznek végrehajtva:
A WCF-infrastruktúra kivételt jelez, ha
javascriptCallbackengedélyezve van, egy visszahívási lekérdezési sztring paraméter található a kérelemben, és a válaszformátum JSON-ra van állítva.Ha a kérelem tartalmazza a visszahívási lekérdezési sztring paramétert, de a művelet nem HTTP GET, a visszahívási paraméter figyelmen kívül lesz hagyva.
Ha a visszahívás neve
nullvagy üres sztring, a válasz nem JSONP formátumban van formázva.