【问题标题】:How to set request header to the ajax object for jqGrid如何将请求标头设置为 jqGrid 的 ajax 对象
【发布时间】:2011-08-08 01:46:01
【问题描述】:

我需要将“授权”请求标头设置为 httpXMLRequest。在网格定义上,我尝试通过 ajaxGridOptions 进行设置,如下所示:

 ajaxGridOptions: { Authorization: 'Basic YWRtaW5AZGVmYXVsdC5jb206YWRTwa6=' } 

并使用如下的 beforeSend 事件:

   beforeSend:  function(jqXHR, settings) {
    jqXHR.setRequestHeader("Authorization", 'Basic YWRtaW5AZGVmYXVsdC5jb206YWRTwa6=');
                    }

以上都不适合我。什么是正确的语法?

谢谢!!

【问题讨论】:

    标签: ajax jqgrid


    【解决方案1】:

    您可以使用例如loadBeforeSend jqGrid 的事件处理程序,定义如下:

    loadBeforeSend: function(jqXHR) {
        jqXHR.setRequestHeader("Authorization", 'Basic YWRtaW5AZGVmYXVsdC5jb206YWRTwa6=');
    }
    

    【讨论】:

    • 我确实看到 Oleg 的解决方案在 firebug 中正确设置了请求标头。
    • 也许我应该为此添加另一个线程。但即使基本令牌绝对正确,我也会不断收到 401 错误。如果我没有在 ajaxOptions 中设置内容类型,我会在服务器端获得“匿名用户”,在我设置 ajaxGridOptions:{ contentType:'application/json'} 后,我会得到 401。我迷路了……
    • 我确实发过a new thread
    • 我删除了我描述授权问题的帖子。问题出在服务器端..与jqgrid无关
    • @xueru:好的!我很高兴听到这个。解决的问题就是好问题。
    【解决方案2】:

    今天的另一个选项是为所有 AJAX 请求全局设置标头:

    $.ajaxSetup({
        headers : {
            'Authorization' : 'Basic YWRtaW5AZGVmYXVsdC5jb206YWRTwa6='
        }
    });
    

    【讨论】:

    • 这在我的情况下似乎不起作用。我添加了这个全局处理程序,它适用于任何 $.ajax 请求,但不适用于来自 jqGrid 的任何内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 2018-03-30
    • 2020-10-09
    相关资源
    最近更新 更多