Я унаследовал сайт для поддержки. Он использует две разные сторонние программы и передает информацию между ними с помощью iFrame для установки файлов cookie. Информация не особенно конфиденциальна.
Используя generic c версии всего, скажем:
* Инструмент 1: www.xyzWarehouse.com
* Инструмент 2: www.xyzCorp.com
* В Страница между инструментами: tools.xyzCorp.com
- xyzWarehouse открывает крошечный iFrame для tools.xyzCorp.com/setTransferCookies.jsp
- setTransferCookies. jsp устанавливает файлы cookie для домена xyzCorp.
- xyzWarehouse затем запускает черный ящик, который открывает URL-адрес для правильной страницы xyzCorp
- пользовательский JS код в xyzCorp, затем открывает эти файлы cookie и использует их для предварительного заполнения полей формы.
Недавно я пытался обновить файлы cookie, чтобы учесть изменения требований безопасности браузера. В настоящее время моей текущей проблемой является попытка заставить файлы cookie работать на Chrome, используя SameSite: None и Secure.
В долгосрочной перспективе мы хотим, чтобы все три местоположения были похожи на:
* www.xyzWarehouse.com
* corp.xyzWarehouse.com
* tools.xyzWarehouse.com
Но это должно go через бюрократизм с ИТ и влечет за собой изменения в администраторе для tool1 и tool2. Нам нужно промежуточное решение, чтобы поддерживать нас до тех пор.
Вот что я пробовал:
Оригинальный код 1: Использование. jsp
cookieString = cookieString.substring(0,cookieString.length()-1) + "}";
Cookie cookie = new Cookie ("xyzTracking",cookieString);
cookie.setMaxAge(365 * 24 * 60 * 60);
cookie.setDomain("xyzWarehouse.com");
response.addCookie(cookie);
Я не могу найти версию Cookies, которая включает тот же сайт, поэтому, вероятно, не могу использовать это. Пожалуйста, дайте мне знать, если я ошибаюсь. Это, конечно, выдает ошибку, сообщающую мне, что мне нужно использовать SameSite: нет
Попытка 2: использование JavaScript
for (i=0;i<attPairs.length;i++) {
var pair = attPairs[i].split("=");
params[pair[0]] = pair[1];
}
jQuery.cookies.set( 'xyzTracking', params, {expiresAt: date, domain:'xyzWarehouse.com', sameSite: 'None', secure: 'true'});
Chrome жаловался - ошибки на одном и том же сайте.
Попытка 3: использование JavaScript
for (i=0;i<attPairs.length;i++) {
var pair = attPairs[i].split("=");
params[pair[0]] = pair[1];
}
document.cookie = "xyzTracking=" + encodeURIComponent(params) + "; domain=xyzWarehouse.com; SameSite=None; Secure";
Chrome жалоба - ошибки на том же сайте
Попытка 4: использование. jsp
cookieString = cookieString.substring(0,cookieString.length()-1) + "}";
response.setHeader("Set-Cookie", "xyzTracking="+cookieString+"; SameSite=none; Secure; Domain=xyzWarehouse.com");
Chrome позволит запустить это без сообщения об ошибках, но на удаленной стороне, пытаясь получить куки, www.xyzWarehouse.com сообщает мне, что куки не установлены.
Что я делаю неправильно и как Я чиню это? У меня нет никакого опыта в. jsp, у меня большой опыт в JavaScript, но, честно говоря, я стараюсь программировать, чтобы избежать использования файлов cookie, если это вообще возможно, поэтому мне едва приходилось их устанавливать. Те, что я установил, никогда не были междоменными.