我有一个使用基本身份验证保护的 WebApi,它使用 AuthorizationFilterAttribute 应用于整个 Api。我的几个 Api 控制器上也有 SignalR 集线器。
除此之外,我还有一个使用我的 WebApi 的网页。网页大部分是用 Backbone 编写的,所以为了调用我的安全 WebApi,我添加了以下 jquery
$.ajaxSetup({
beforeSend: function (jqXHR, settings) {
jqXHR.setRequestHeader('Authorization', 'Basic ' + Token);
return true;
}
});
这适用于与我的 Api 控制器进行通信,但添加上述代码已断开与我的 SignalR 集线器的连接,特别是:
XMLHttpRequest cannot load http://localhost:50000/signalr/negotiate?_=1366795855194.
Request header field Authorization is not allowed by Access-Control-Allow-Headers.
删除该jqXHR.setRequestHeader()
线路会恢复我的 SignalR Hub 连接,但会中断 Api 调用。
鉴于上述情况,我可以做一些骇人听闻的事情,并且仅在发出的请求不是 /signalr 时才设置请求标头,但这只是感觉很脏......
有没有更清洁的方法来解决这个问题?
我只是在做傻事吗?有没有其他人遇到过这个?