【问题标题】:Get cookies from AJAX request从 AJAX 请求中获取 cookie
【发布时间】:2014-08-23 02:30:48
【问题描述】:

我正在尝试在 AJAX 发布后读取后端设置的 cookie,我已经尝试了所有我能想到/遇到的补救措施,但我不知道我做错了什么。

这是从 AJAX 请求中获取标头的代码 sn-p。我更有兴趣看到 “Set-Cookie”标头在那里,但不是。这段代码有什么问题?

<?php
if ($_POST){
    header('Content-Type: application/json');

    setcookie('test_'.rand(),'cors');

    echo json_encode(array(
        'name' => 'Cors',
        'server' => 'Local'
    ));
} else { ?>

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
    function post(){
        $.post(null,{
            xhrFields: {
                withCredentials: true
            }
        }).done(function(a,b,options){
            $('code').html(options.getAllResponseHeaders());
        });
    }

    $(function(){
        $('.post').click(post);     
    });
</script>
<a href="javascript:;" class="post">Send</a>
<hr></hr>
<strong>Response Headers</strong><br/>
<pre><code>---</code></pre>

<?php } ?>

【问题讨论】:

标签: jquery ajax cookies


【解决方案1】:

getAllResponseHeadersXmlHttpRequest spec 声明:

返回所有 HTTP 标头,不包括属于 Set-Cookie 或 Set-Cookie2 的不区分大小写匹配

这基本上意味着你做不到,至少那样做。

也许你可以试试reading the cookies from the document

【讨论】:

  • 感谢 Kojo,这确实有帮助。我使用 document.cookie 代替 options.getAllResponseHeaders() 并且它能够读取 cookie。
猜你喜欢
  • 2016-10-09
  • 2014-01-15
  • 2021-01-31
  • 1970-01-01
  • 2012-06-25
  • 2021-10-11
  • 2015-10-26
  • 2022-01-07
  • 2014-04-11
相关资源
最近更新 更多