从jQuery和JSON调用WCF REST服务时的Access-Control-Allow-Origin

时间:2013-11-28 07:13:15

标签: jquery json wcf rest

我有以下代码。

WCF REST方法

    [WebInvoke(Method = "GET",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "Account")]
    [OperationContract]
    string GetUniqueLoginId();

客户端呼叫

$.ajax({
    type: "GET",
    url: serviceURL + 'Account',
    contentType: 'application/json; charset=utf-8',
    dataType: "json",
    success: app.onGetUniqueId,
    error: app.onAjaxError
 });

当我使用IE(11)时,它通过返回唯一ID完美地工作。但是当我使用chrome时,它会给我以下错误。

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin   'http://localhost:5553' is therefore not allowed access.

如何解决问题?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

这意味着您请求的WCF服务与调用它的应用程序的来源不同,因此受"Same Origin policy"限制。您必须使用JSONP(服务必须支持jsonp)或CORS(服务器端应该添加允许您的源的CORS头)

答案 1 :(得分:1)

您需要在Web配置文件中添加以下配置,在IIS或IIS Express上托管的服务上启用CORS。

<system.webServer>  

<httpProtocol>  
  <customHeaders>  
    <add name="Access-Control-Allow-Origin" value="*" />  
  </customHeaders>  
</httpProtocol>
 ...

通过将其设置为*,我们允许来自任何来源的请求访问该服务。