使用jquery ajax请求拦截响应头

时间:2012-04-13 23:05:09

标签: javascript jquery ajax header response

标题的确如此:

我对我的服务器执行ajax请求,它以403响应,但是我想要检索并保存在localStorage上。这适用于手机应用程序(Android和iOS),因此初始域为本地(文件://)。执行调用时,我使用以下代码尝试拦截响应,但它返回undefined或空字符串。

的Ajax:

    $.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并在后续请求中将其发送回服务器。

2 个答案:

答案 0 :(得分:1)

使用jquery XHR对象作为方法getAllResponseHeaders(),它应该提供你想要的东西。

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

答案 1 :(得分:0)

这个问题绝对是由django服务器上的CSRF保护引起的。根据django禁用或实现变通方法是解决这个问题的唯一方法。

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