c# - 跨域基本认证

标签 c# ajax silverlight basic-authentication

我正在尝试在浏览器堆栈上的 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 更改为不是跨域调用,则两个代码示例都可以工作。这种场景是否可以进行跨域基本认证?

最佳答案

看看他下面关于 making a Service Available Across Domain Boundaries in silverlight 的链接.

多年来我一直在使用基本身份验证,但我一直在使用它

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

注意:事实证明,Silverlight 在浏览器和客户端堆栈中都提供了 HTTP 处理。默认情况下,Silverlight 使用浏览器进行 HTTP 处理。唯一的问题是浏览器 HTTP 处理仅支持 GET 和 POST 请求方法。

通过这样做,您应该能够访问允许 PUT 和 DELETE Http 方法的 RESTful 服务。

我也可以通过这种方法使用 Bearer (JWT) 身份验证。

希望这对您有所帮助。

关于c# - 跨域基本认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33573933/

相关文章:

silverlight - 从 Silverlight 中的 UserControl 派生

Silverlight 验证消息位置

c# - ForEach循环到txt

jquery - 使用jquery解析xml文件中元素的未知属性

php - Ajax 请求 mysql

.net - 在Silverlight中设置初始控件焦点

c# - SetWindowsHookEx 全局键盘 Hook 未捕获所有按键

c# - WebAPI 2.0 Post 未反序列化 List<T> 属性

c# - 方法没有重载需要 0 个参数,我缺少什么?

javascript - 立即将 csv 文件中的数据显示到 handontable