JSessionId(httponly cookie)未从Javascript发送到Web服务

时间:2011-03-25 13:51:13

标签: jquery cookies httponly jsessionid ondemand

我们有一个网络小程序,可以在网址https://secure-ausomxeja.crmondemand.com/OnDemand/下加载...我们在同一个域内进行网络服务调用(https://secure-ausomxeja.crmondemand.com/Services/Integration )使用JQuery。我们无法理解JSessionId(一个httponly cookie)没有在JQuery Web服务调用中传递,即使所有内容都发生在同一个域中。有趣的是,如果Web服务URL以https://secure-ausomxeja.crmondemand.com/OnDemand/开头...(虽然不正确),浏览器会正确传递cookie。

问题是,要将httponly cookie发送回服务器,是否还需要具有相同的域甚至第一个目录的名称(在我们的例子中是OnDemand)?

以下是未传递JSessionId cookie的代码片段 -

$.ajax({
url:"https://secure-ausomxeja.crmondemand.com/Services/Integration",
type: "POST",
dataType: "xml",
data: ...,
beforeSend: function(xhr) { xhr.setRequestHeader("SOAPAction", "..."); },
complete: endSaveProduct,
contentType: "text/xml; charset=\"utf-8\""
});

下面是传递JSessionId cookie的代码片段(但没有意义,因为该位置没有可用的Web服务) -

$.ajax({
url:"https://secure-ausomxeja.crmondemand.com/OnDemand/...",
type: "POST",
dataType: "xml",
data: ...,
beforeSend: function(xhr) { xhr.setRequestHeader("SOAPAction", "..."); },
complete: endSaveProduct,
contentType: "text/xml; charset=\"utf-8\""
});

1 个答案:

答案 0 :(得分:0)

查看cookie并查看它是否有路径设置(您可以在firefox中轻松完成此操作)。可能它确实是因为那些可能是不同的web应用程序,并且容器将在这种情况下为每个创建不同的会话。

因此,回答这个问题的更好方法可能是那些不同的网络应用程序吗?容器会为这两个请求创建不同的会话吗?