JSessionId (httponly cookie) не отправляется в веб-службу из Javascript

У нас есть веб-апплет, который загружается по URL-адресу https://secure-ausomxeja.crmondemand.com/OnDemand/ ... откуда мы выполняем вызов веб-службы в том же домене (https://secure-ausomxeja.crmondemand.com/Services/Integration) с помощью JQuery. Мы не можем понять тот факт, что JSessionId (httponly cookie) не передается в вызове веб-службы JQuery, даже если все происходит в том же домене. Интересно, что если URL-адрес веб-службы будет начинаться с https://secure-ausomxeja.crmondemand.com/OnDemand/ ... (хотя и неверно), браузер правильно передает cookie.

Вопрос в том, достаточно ли для отправки httponly cookie на сервер того же домена или даже требуется имя первого каталога (OnDemand в нашем случае)?

Ниже приведен фрагмент кода, который не передает файл cookie JSessionId.

$.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\""
});

Ниже приведен фрагмент кода, который передает cookie JSessionId (но не имеет смысла, поскольку в этом месте нет доступной веб-службы):

$.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\""
});

person ravikiran    schedule 25.03.2011    source источник
comment
@ user676836 Как вы устанавливаете cookie? Установлен ли файл cookie на домен верхнего уровня? Является ли путь cookie корневым /? Вы можете показать нам файл cookie?   -  person redsquare    schedule 25.03.2011
comment
@redsquare, спасибо, что разъяснили эту мысль, да, путь для файлов cookie установлен на / OnDemand. Set-Cookie: JSESSIONID=123456...; Domain=secure-ausomxeja.crmondemand.com; HttpOnly; path=/OnDemand; secure Теперь я могу сделать вывод, что вызвать эту веб-службу в этом методе невозможно :(   -  person ravikiran    schedule 26.03.2011


Ответы (1)


Посмотрите на файл cookie и посмотрите, установлен ли для него путь (вы можете легко сделать это в firefox). Скорее всего, это так, потому что это могут быть разные веб-приложения, и в этом случае контейнер будет генерировать разные сеансы для каждого.

Так что, возможно, еще лучший способ ответить на вопрос - это разные веб-приложения? Будет ли контейнер создавать разные сеансы для этих двух запросов?

person cotton.m    schedule 25.03.2011
comment
спасибо, что разъяснили эту мысль, да, путь для файлов cookie установлен на / OnDemand. Set-Cookie: JSESSIONID=123456...; Domain=secure-ausomxeja.crmondemand.com; HttpOnly; path=/OnDemand; secure Теперь я могу сделать вывод, что вызвать эту веб-службу в этом методе невозможно :( - person ravikiran; 26.03.2011