【发布时间】:2020-01-04 13:44:29
【问题描述】:
目标:跨域共享 cookie
我们的 UI 在端口 P1 的服务器“A”中运行,我们的服务已启动并在端口 P2 的同一服务器“A”中运行。
UI (Server 'A', Port P1) ----> Services (Server 'A', Port P2)
从 UI 向服务进行休息调用时,cookie 不会作为请求的一部分发送。
我了解 cookie 不会在域之间共享。尝试了Why is jquery's .ajax() method not sending my session cookie? 中建议的方法,但没有成功。
$.ajax({
url: a_cross_domain_url,
xhrFields: {
withCredentials: true
}
});
计划尝试以下方法,对于实现我们的目标的任何意见或想法将不胜感激。谢谢。
方法:
-
按照https://www.drupal.org/node/1133084 中的建议在 Cookie 标头属性中设置所需的 cookie
$.ajax({ url: a_cross_domain_url, xhrFields: { withCredentials: true }, // headers: {'Cookie' : 'cookieName=cookieValue'}, beforeSend: function(xhr) { xhr.setRequestHeader("Cookie", 'cookieName=cookieValue'); }); -
使用通用 VIP(比如:https://example.com)托管和访问 UI 和服务,这样浏览器就不会感觉到请求是跨域发出的。
UI (https://example.com) ----> Services (https://example.com/service1)
更新:
我们继续采用第二种方法,因为这两个应用程序都由一个共同的 VIP 访问,cookie 是由浏览器发送的。
【问题讨论】:
-
什么是普通VIP?请,当您解决问题时,请稍微详细一点,因为很多人都会遇到和您一样的问题。您将节省时间,就像他们可以节省您的时间一样。
标签: jquery cookies cross-domain