跨域发送 Cookie

Sending Cookies across Cross Domain

Objective : 跨域共享 cookie

我们的 UI 是 运行 在端口 P1 的服务器 'A' 中,我们的服务已启动并且 运行 在同一服务器 'A' 中的端口P2.

 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
      }
    });

计划尝试以下方法,如有任何关于实现我们的 objective 的意见或想法,我们将不胜感激。谢谢。

方法:

  1. 按照 https://www.drupal.org/node/1133084

    中的建议在 Cookie header 属性中设置所需的 cookie
    $.ajax({
     url: a_cross_domain_url,
     xhrFields: {
     withCredentials: true
      },
      //    headers: {'Cookie' : 'cookieName=cookieValue'},
      beforeSend: function(xhr) {
           xhr.setRequestHeader("Cookie", 'cookieName=cookieValue');
      });
    
  2. 使用通用 VIP 托管和访问 UI 和服务(比方说:https://example.com),这样浏览器就不会感觉到请求是跨域发出的.

     UI (https://example.com) ----> Services (https://example.com/service1)
    

更新:

我们继续使用第二种方法,因为这两个应用程序都由一个共同的 VIP 访问,cookie 由浏览器发送。

我觉得第二种方法是 cleaner.I 已经尝试过并且有效。