365被限制了让提款-365提款-28365365体育在线投注

使用 JSONP - WCF

使用 JSONP - WCF

JSON Padding (JSONP) 是一种在 Web 浏览器中启用跨站点脚本支持的机制。 JSONP 的设计是基于 Web 浏览器能够从与当前加载文档不同的站点加载脚本的功能。 该机制的工作原理是使用用户定义的回调函数名称填充 JSON 有效负载,如以下示例所示。

callback({"a" = \\"b\\"});

在前面的示例中, {"a" = \\"b\\"}JSON 有效负载包装在函数调用 callback中。 回调函数必须在当前网页中定义。 JSONP 响应的内容类型为 application/javascript。

不会自动启用 JSONP。 若要启用它,请将 javascriptCallbackEnabled 属性设置为 true HTTP 标准终结点之一(WebHttpEndpoint 或 WebScriptEndpoint),如以下示例所示。

回调函数的名称可以在名为回调的查询变量中指定,如以下 URL 所示。

http://baseaddress/Service/RestService?callback=functionName

调用时,服务会发送如下所示的响应。

functionName({"root":"Something"});

可以通过将 JavascriptCallbackBehaviorAttribute 应用于服务类来指定回调函数的名称,具体如下文示例所示。

[ServiceContract]

[JavascriptCallbackBehavior(ParameterName = "$callback")]

public class Service1

{

[OperationContract]

[WebGet(ResponseFormat=WebMessageFormat.Json)]

public string GetData()

{

}

}

对于前面显示的服务,请求如下所示。

http://baseaddress/Service/RestService?$callback=anotherFunction

调用后,服务将响应以下内容。

anotherFunction ({"root":"Something"});

HTTP 状态代码

HTTP 状态代码为 200 以外的 JSONP 响应包含 HTTP 状态代码的数字表示形式的第二个参数,如以下示例所示。

anotherFunction ({"root":"Something"}, 201);

验证

启用 JSONP 时,将执行以下验证:

如果 javascriptCallback 已启用,WCF 基础结构将引发异常,请求中存在回调查询字符串参数,并且响应格式设置为 JSON。

如果请求包含回调查询字符串参数,但作不是 HTTP GET,则忽略回调参数。

如果回调名称为 null 空字符串,则响应的格式不是 JSONP。

另请参阅

WCF Web HTTP 编程模型概述