2015-11-06 152 views
3

我試圖在瀏覽器堆棧上的Silverlight上對Web服務器執行跨域基本身份驗證,但我無權訪問計算機,但我無法訪問代碼或託管代碼。每當我嘗試下面的代碼,我收到了NotSupportedException跨域基本身份驗證

var httpClient = new HttpClient(); 
WebRequest.RegisterPrefix("http://", WebRequestCreator.BrowserHttp); 
var byteArray = Encoding.UTF8.GetBytes("username:password"); 
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray)); 
var response = await httpClient.GetAsync("http://www.example.com", HttpCompletionOption.ResponseHeadersRead); 

我也試圖與阿賈克斯以下,但它變成一個OPTIONS 1.1請求,

$.ajax({ 
    type: "GET", 
    url: "http://www.example.com", 
    global: false, 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader("Authorization", "Basic " + btoa("username:password")); 
    }, 
}); 

如果我改變http://www.example.com不爲跨域調用這兩個代碼示例工作。在這種情況下,是否有可能進行跨域的基本認證?

回答

0

看看他下面的鏈接關於making a Service Available Across Domain Boundaries in silverlight

我一直在使用基本身份驗證多年,但現在我已經用它使用

WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp); 

注意了:原來,Silverlight提供HTTP在瀏覽器和客戶端stack.By默認設置情況下處理Silverlight使用瀏覽器進行HTTP處理。唯一的問題是瀏覽器HTTP處理只支持GET和POST請求方法。

通過這樣做,您應該可以訪問允許PUT和DELETE Http方法的RESTful服務。

我也可以通過這種方法使用承載(JWT)身份驗證。

希望這會有所幫助。