【问题标题】:intercept response header with jquery ajax request使用 jquery ajax 请求拦截响应标头
【发布时间】:2012-04-13 23:05:09
【问题描述】:

正如标题所暗示的那样:

我向我的服务器执行一个 ajax 请求,它以 403 响应,但我想检索一些标头并将其保存在 localStorage 上。这适用于 phonegap 应用程序(Android 和 iOS),因此启动域是本地 (file://)。在执行调用时,我使用以下代码尝试拦截响应,但它返回 undefined 或空字符串。

阿贾克斯:

    $.ajax({
        url: serverLink+action,
        type: "POST",
        data: "access_token="+accessToken+"&uid="+uid,
        crossDomain: true,
        complete: function(resp){
            var header = resp.getAllResponseHeaders();
            var match = header.match(/(Set-Cookie|set-cookie): (.+?);/);
            if (match) session = match[2];
            console.log(header, session)
        }
    })

响应标头

Connection  Keep-Alive
Content-Encoding    gzip
Content-Length  1198
Content-Type    text/html
Date    Fri, 13 Apr 2012 22:51:02 GMT
Keep-Alive  timeout=15, max=100
Server  Apache/2.2.14 (Ubuntu)
Set-Cookie  sessionid=ebd26167e32bada2d2ed0bd3cc16d8a2; expires=Fri, 27-Apr-2012 22:51:02 GMT; Max-Age=1209600; Path=/
Vary    Cookie,Accept-Encoding

进一步阅读将我带到here,它谈到了 django 服务器上的 CSRF。我们正在使用 django 服务器,我怀疑这个或 403 是问题所在。似乎没有办法(从那里的示例答案)从 webview 收集 cookie 并在后续请求中将其发送回服务器。

【问题讨论】:

    标签: javascript jquery ajax header response


    【解决方案1】:

    使用 jquery XHR 对象作为 getAllResponseHeaders() 方法,它应该提供你所追求的。

    http://api.jquery.com/jQuery.ajax/

    【讨论】:

    • 对,但由于它是 403 禁止访问,所以它没有触发,因为它没有成功。这就是为什么我使用第一个对象是 jqXHR 对象的“完整”。
    • 你也可以通过 var jqXHR = $.ajax(); ajax 返回它并且同样可用。
    • 我尝试了您的建议 link 但 var jqXHR = $.ajax() 返回 null 而来自错误回调的 jqXHR 是一个空字符串。
    • 尝试使用 error(jqXHR, textStatus, errorThrown),用法与成功相同,但在错误时触发,如 403
    • 是的,你可以从 pastebin link 看到,我已经尝试了所有暴露 xhr 对象的回调,完成、成功、错误、$.ajax 作为 var 和 statusCodes。跨度>
    【解决方案2】:

    这个问题肯定是由 django 服务器上的 CSRF 保护引起的。根据 django 禁用或实施解决方法是解决此问题的唯一方法。

    其实这篇文章帮助很大:Django CSRF check failing with an Ajax POST request

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多