2011-11-16 146 views
0

所以我有一個基本的WCF服務被直接jQuery/HTML使用,沒有asp.net。jQuery ajax WCF跨域

我可以通過瀏覽器對我的test.svc/test進行GET調用,並獲得我預期的JSON結果。 { 「d」: 「測試1」, 「測試2」, 「TEST3」]}

現在,我試圖通過jQuery 1.4.x的消費它

$.ajax({ 
     type: "GET", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     url: methodUrl, 
     data: {}, 
     beforeSend: function (XMLHttpRequest) { 
      XMLHttpRequest.setRequestHeader("Accept", "application/json"); 
     }, 
     success: successCallback, 
     error: failedCallback 
    }); 

我抓取錯誤信息並將其轉儲到控制檯,這是我的錯誤。 LOG:{「readyState」:4,「status」:0,「statusText」:「error」} LOG:「error」 LOG:{「message」:「Access is denied。\ r \ n」,「描述「:」訪問被拒絕。「\ r \ n」,「數字」: - 2147024891}

我讀過,我需要使用JSON-P和/或crossDomainScriptAccessEnabled或30其他的東西。

到目前爲止,我還沒有看到這個問題的一致解決方案。

任何幫助,將不勝感激。

謝謝! Jon

回答

0

因此,無論如何它似乎是我們的情況的破解。

我們正在使用MS Dynamics CRM 2011,它只允許使用JS的普通html頁面,並且只支持IE。

我們最終運行了與CRM(打破需求)位於同一個框中的另一個WCF服務,該服務只是一個代理,該代理反過來調用位於另一個框中的真正的WCF服務。

這是愚蠢的,並增加了更多的維護開銷,但我們至少能夠繼續生產JSON而不是JSON-P,以便其他消費者也可以使用它。