- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用基本身份验证保护的 WebApi,它使用 AuthorizationFilterAttribute 应用于整个 Api。我的几个 Api Controller 上也有 SignalR 集线器。
除此之外,我还有一个使用我的 WebApi 的网页。网页大部分是用 Backbone 编写的,所以为了调用我的安全 WebApi,我添加了以下 jquery
$.ajaxSetup({
beforeSend: function (jqXHR, settings) {
jqXHR.setRequestHeader('Authorization', 'Basic ' + Token);
return true;
}
});
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 调用。
最佳答案
我之前没有提到的是我有一个 DelegatingHandler 它将正确的 header 发送回任何进入我的 WebApi 的请求。这适用于对我的 WebApi 的任何请求,但我错误地认为这也适用于 SignalR 请求。
由于 SignalR 依赖于几种不同的传输方法,因此假设我首先可以访问 Authorization header 似乎是不合理的 - 例如,它们不是所有 WebSockets 实现的要求(see here)
我目前的解决方案是使用 SignalR 的 HubPipeline (detailed here)。使用它,我相信我可以在查询字符串中传递基本身份验证凭据并编写一个单独的模块来处理 SignalR 请求的授权:
传递查询字符串
$.connection.hub.qs = "auth=" + MyBase64EncodedAuthString;
过滤器
public class SignalrBasicAuthFilterAttribute: Attribute, IAuthorizeHubConnection {
public bool AuthorizeHubConnection(HubDescriptor hubDescriptor, IRequest request) {
var authString = request.QueryString["auth"];
// ... parse, authorize, etc ...
return true;
}
}
注册过滤器
var globalAuthorizer = new SignalrBasicAuthFilterAttribute();
GlobalHost.HubPipeline.AddModule(new AuthorizeModule(globalAuthorizer, globalAuthorizer));
另外...
$.ajaxSetup({
beforeSend: function (jqXHR, settings) {
if (settings.url.indexOf("/signalr") == -1)
jqXHR.setRequestHeader('Authorization', 'Basic ' + Token);
return true;
}
});
在此过程中,我将让 SignalrBasicAuthFilterAttribute 类承担授权 SignalR 请求的全部责任。
关于ajax - 使用 ajaxSetup beforeSend 进行基本身份验证会破坏 SignalR 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16190148/
我有 3 个 js 文件: app.js $.ajaxSetup({ error : function(request) { switch (request.status) {
我想为我的所有 ajax 请求设置一个全局数据参数 $.ajaxSetup({ data: {hash : "12345"} }); 设置后我调用: var myData = { nam
我正在使用 $.ajaxSetup 在我的站点中使用全局授权方法和全局错误处理。我想将回调函数传递给全局错误方法,这样我就可以在需要时在全局错误处理程序中调用该函数。这是我的 $.ajaxSetup:
我有以下函数来设置我的 AJAX 请求的 header : self.authenticate = function () { self.token = sessionStorage.getI
登录远程 aPI 服务器并获取 access_token 后,我尝试为所有后续 ajax 调用设置授权 header : .done(function (result) {
jQuery 中的 $.ajax(); 和 $.ajaxSetup(); 有什么区别: $.ajax({ cache:false }); 和 $.ajaxSetup({ cache:t
我正在使用 ASP.Net MVC 和 jQuery 1.8.2 我有一个带有按钮的表单,单击该按钮时会调用此 javascript: $(function () { $('#SearchBu
我有 // Ajax setup $.ajaxSetup({ beforeSend: function() { $('#general-ajax-load ').fadeIn(); }, c
我正在尝试关闭应用程序中的所有 AJAX,请参阅 here . 使用ajaxSetup控制getJSON吗? 即此 getJSON 请求是同步的吗? // TURNING OFF ALL AJAX $
在 JS 文件中我有这个: $.ajaxSetup({ type: 'POST', contentType: "application/json; charset=utf-8",
我正在使用 $.ajax 提交表单,我想在提交中添加一个不属于表单输入的键值对,这对我的所有表单都是通用的。所以我计划将公共(public)部分移动到 ajaxsetup。我想在 Action 中接收
$.ajaxSetup 用于 jquery 中的 ajax 调用。 如果我们使用 jquery ajax,这工作得很好。 但在 MVC 中,我们使用 Ajax.BeginForm() 。回调处理程序是
我想对所有 ajax 调用使用 ajaxsetup,但它似乎干扰了我在网站上的 jqgrids。有没有一种方法可以全局设置我的 ajax 调用,而不会弄乱 jqgrids 内部调用。下面的代码是我想在
我有两个 jQuery 脚本 - 一个用于内联表单编辑,第二个是 jQuery 自动完成。 自动完成有以下ajaxSetup: $.ajaxSetup({ url: '/notes/inline
代码1 $.ajax({url:"1.aspx/HelloWorld",type:"GET",dataType:"json",contentType:"application/json"}); 代码2
我正在尝试在 JSP 文件中插入以下代码段 { $.ajaxSetup({ cache: false, async: false }); var
我目前正在开发一个 jquery 程序。我的程序在 firefox 3.5 中运行良好,但直到我将浏览器升级到 firefox 4.0 后才能正常运行。从那时起,'parsererror' 就再也没有
我的布局页面上有 AJAX 事件绑定(bind): $(document).not("#approvalTitleBlock").bind("ajaxSend", function() { $("
我有一种方法可以跟踪当前的 Ajax 请求,其中涉及 $.ajaxSetup(),并计算 beforeSends 和完成数。 jsFiddle Demo var ajaxProcs = 0; $.aj
这可能很奇怪,但我正在寻找的是如何使 jQuery.ajaxSetup() 的范围仅在特定对象内。让我举个例子,我有两个对象 obj_1 和 obj_2。我想以这样一种方式编写 ajaxSetup,即
我是一名优秀的程序员,十分优秀!