【问题标题】:Can headers be sent in an AJAX request?可以在 AJAX 请求中发送标头吗?
【发布时间】:2010-08-05 06:17:08
【问题描述】:

我可以通过 AJAX 请求调用服务器来设置一个新的 cookie(即在页面已经加载之后)吗?

例如,当访问者点击链接时,ajax 会打开一个设置新 cookie 的 php 文件,如下所示:

setcookie('cookiename', 'true', time()+3000, "/",'...');

但这是在呈现 html(包含实际按下的<a> 标签的页面)之后完成的。仍然可以在 ajax 中设置 cookie 吗? (可能是因为加载的php文件与原始html页面是分开的)。

【问题讨论】:

    标签: ajax header request cookies


    【解决方案1】:

    当然,您可以让服务器的响应设置一个 cookie。请记住,cookie 是 HTTP 的东西,而不是 HTML 的东西;您的原始 HTML 文件已经在浏览器上这一事实无关紧要。您的 ajax 请求是对服务器的单独 HTTP 请求,它(希望如此!)生成返回给浏览器的 HTTP 响应;并且该响应可以包含一个新的Set-Cookie 标头。

    我不是 PHP 人,您需要检查您用于设置 cookie 的 PHP 机制是否存在限制(我无法想象有)。但从根本上说,不,这样做没有问题。我已经使用 JSP 和经典 ASP 完成了它。

    【讨论】:

    • 重定向标头也是 HTTP 的事情,但是尝试在 ajax 请求中从服务器重定向用户只会导致发送到 JS 的输出不同!
    【解决方案2】:

    我已经在我的网站上设置了响应 AJAX 请求的 cookie,我还没有遇到任何问题。 (虽然我没有寻找问题。)可能是某些浏览器在 XmlHttpRequest 中接收它们时没有设置 cookie,但到目前为止我已经看到它在 IE、Chrome 和 Firefox 中工作。

    【讨论】:

      【解决方案3】:

      为什么不使用 javascript 来编辑 cookie?以 JSON 格式返回 cookie 的内容,并使用 javascript 来存储值。

      【讨论】:

      • 您不能从 JavaScript 设置 HTTPONLY cookie。
      猜你喜欢
      • 2016-06-27
      • 2011-10-01
      • 2010-11-13
      • 2015-04-28
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多