Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
JSON Padding (JSONP) est un mécanisme qui permet la prise en charge des scripts entre sites dans les navigateurs Web. JSONP est conçu autour de la capacité des navigateurs Web à charger des scripts à partir d’un site différent de celui à partir duquel le document chargé actuel a été récupéré. Le mécanisme fonctionne en remplissage de la charge utile JSON avec un nom de fonction de rappel défini par l’utilisateur, comme illustré dans l’exemple suivant.
callback({"a" = \\"b\\"});
Dans l’exemple précédent, la charge utile JSON est {"a" = \\"b\\"}
encapsulée dans un appel de fonction. callback
La fonction de rappel doit déjà être définie dans la page Web active. Le type de contenu d’une réponse JSONP est application/javascript
.
JSONP n’est pas activé automatiquement. Pour l’activer, définissez l’attribut javascriptCallbackEnabled
true
sur l’un des points de terminaison standard HTTP (WebHttpEndpoint ou WebScriptEndpoint), comme illustré dans l’exemple suivant.
<system.serviceModel>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" javascriptCallbackEnabled="true"/>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
Le nom de la fonction de rappel peut être spécifié dans une variable de requête appelée rappel, comme indiqué dans l’URL suivante.
http://baseaddress/Service/RestService?callback=functionName
Lorsqu’il est appelé, le service envoie une réponse semblable à ce qui suit.
functionName({"root":"Something"});
Vous pouvez également spécifier le nom de la fonction de rappel en appliquant JavascriptCallbackBehaviorAttribute à la classe de service, comme montré dans l’exemple suivant.
[ServiceContract]
[JavascriptCallbackBehavior(ParameterName = "$callback")]
public class Service1
{
[OperationContract]
[WebGet(ResponseFormat=WebMessageFormat.Json)]
public string GetData()
{
}
}
Pour le service indiqué précédemment, une requête ressemble à ce qui suit.
http://baseaddress/Service/RestService?$callback=anotherFunction
Lorsqu’il est appelé, le service répond avec les éléments suivants.
anotherFunction ({"root":"Something"});
Codes d’état HTTP
Les réponses JSONP avec des codes d’état HTTP autres que 200 incluent un deuxième paramètre avec la représentation numérique du code d’état HTTP, comme illustré dans l’exemple suivant.
anotherFunction ({"root":"Something"}, 201);
Vérifications
Les validations suivantes sont effectuées lorsque JSONP est activé :
L’infrastructure WCF lève une exception si
javascriptCallback
est activé, qu'un paramètre de chaîne de requête de rappel est présent dans la demande et que le format de réponse est défini sur JSON.Si la requête contient le paramètre de chaîne de requête de rappel, mais que l’opération n’est pas une requête HTTP GET, le paramètre de rappel est ignoré.
Si le nom de rappel est
null
ou une chaîne vide, la réponse n’est pas mise en forme en tant que JSONP.