【问题标题】:Header named 'Cookie' not always set using Firefox名为“Cookie”的标头并不总是使用 Firefox 设置
【发布时间】:2013-07-01 09:06:17
【问题描述】:

我正在使用 ajax 发布到 javascript 函数中的端点。在发布之前,我在请求中设置了一个名为“Cookie”的标头。我曾尝试使用 beforeSend 和使用 'headers' 设置标题(请参见下面的代码),但有时只设置标题。很多时候“Cookie”标头没有设置。我可以通过查看 Firebug 中 Post 请求的标头来判断这一点。我只对名为“Cookie”的标题有这个问题。所有其他标题都是一致设置的。我无法将“Cookie”标头的名称更改为其他值,因为它是我调用的服务所必需的。

$.ajax({
    url:url,
    type:'POST',
    contentType: "application/xml",
    beforeSend: function (request)
        {
            request.setRequestHeader("Cookie", authCookie);
            request.setRequestHeader("Authorization", "Authentication id=company.platform.services.org.test,app_secret=aEWEvsddsdddddds0");
        },
    headers: {"Cookie": "abc.etc.authid=" + companyID + ",abc.etc.ticket=" + ticket, "Authorization": "Authentication id=company.platform.services.org.test,app_secret=aEWEvsddsdddddds0"},
    data: order,
    success: createOrderCallback,
    error: createOrderError
});

是否有更好的方法来设置此标头以确保始终为每个请求设置它?

【问题讨论】:

  • 您不能使用 AJAX 设置 cookie(用于不同的域)。
  • “Cookie”标头由浏览器控制。使用document.cookie 操作cookie (documentation)

标签: javascript http jquery cookies http-headers


【解决方案1】:

无法用XHR http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader()-method设置cookie头

它似乎工作的唯一原因可能是因为您有浏览器发送的实际 cookie。

【讨论】:

  • 嗯,直接设置是不可能的,但是如果是同域的URL,那么对document.cookie的更改就会反映,不是吗?
  • @Pointy 是的,但那完全不是一回事。例如,document.cookie 对 httponly 标头没有任何控制权,而设置 cookie 标头将拥有所有控制权。
  • 感谢您的回复。我将研究其他方法来发出此发布请求并能够设置“Cookie”标头。如果您对以不同方式发布到网络服务并设置“Cookie”标头有任何建议,请告诉我。
猜你喜欢
  • 2013-09-18
  • 2021-02-06
  • 2013-07-24
  • 2015-05-16
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 2017-08-12
相关资源
最近更新 更多