我试图在浏览器堆栈上的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);我还尝试了使用ajax执行以下操作,但它变成了一个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更改为不是跨域调用,则两个代码示例都有效。在此场景下,是否可以进行跨域基本身份验证?
发布于 2015-12-08 09:11:36
看看下面关于making a Service Available Across Domain Boundaries in silverlight的链接。
我已经使用基本身份验证很多年了,但是我一直在使用
WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);注意:事实证明,Silverlight在浏览器和客户端stack.By中都提供了HTTP处理,默认Silverlight使用浏览器进行HTTP处理。唯一的问题是浏览器HTTP处理只支持GET和POST请求方法。
通过这样做,您应该能够访问允许PUT和DELETE Http方法的RESTful服务。
我也可以通过这种方法使用持有者(JWT)身份验证。
希望这能有所帮助。
https://stackoverflow.com/questions/33573933
复制相似问题