如何在jQuery或WinJS ajax调用期间从302获取Set-Cookie标头?

时间:2014-06-18 22:28:19

标签: jquery cross-domain winjs

我试图拦截cookie。这是请求时间表:

  1. 我发送POST请求。
  2. 服务器发送302并添加两个Set-Cookie标头(用于身份验证)
  3. jQuery或WinJS添加标题并将GET发送到重定向网址。
  4. 我收到200回复,但此处不包含Cookie。
  5. 我可以在任何地方拦截这些Cookie吗?


    以下是我发送此请求的两种方式:

        WinJS.xhr({
            type: 'post',
            url: url,
            data: token
        }).done(
            function completed(request) {
                // get cookie?
            }
        );
    
        $.ajax({
            url: url,
            type: 'post',
            data: token,
            success: function(data, text, xhr) {
                // get cookie?
            }
        });
    

1 个答案:

答案 0 :(得分:1)

经过一些研究,我发现无法拦截或停止同域重定向。根据{{​​3}},

  

Javascript中没有套接字支持。您只能使用XMLHTTPRequest包装器或可选的包装器(如jQuery.ajax)来构建HTTP查询。这是出于各种好的理由,主要是安全性。

所以XMLHTTPRequest是你能得到的最低价。 this answer告诉我们,我们无法拦截同域重定向永远。答案包含在下面以供参考。


根据This answer(强调补充):

  

如果响应是HTTP重定向:

     
    

如果Location头传送的URL的来源是相同的来源     使用XMLHttpRequest源和     重定向不会违反无限     循环预防措施,透明     观察时遵循重定向     同源请求事件规则。

  

它们是the W3C standard for the XMLHttpRequest object以供将来发布:

  

此规范不包括   以下是正在进行的功能   考虑将来的版本   这个规范:

     
      
  • 要禁用以下重定向的属性;
  •   

considering规范不再提及此问题。