我有以下情况。我有一个网站 一个正在运行的节点.js用户可以在其中登录,然后使用各种 javascript API 调用执行任务。当他们登录时,我会为他们分配一个cookie,该cookie在发出所有Web请求时使用,这样我就可以跟踪他们已经发出了多少请求。
现在,我希望另一个站点 B 也能够使用站点 A 提供的 API。我的问题是,站点 B 上的用户如何获得允许他们向站点 A 发出请求的 cookie,而无需访问站点 A 并在那里登录。如果我使用某个默认帐户发出跨域 GET 登录请求,则无法从中提取响应中分配的 cookie。
如果可能的话,我会避免在从站点 B 到 A 的获取请求中使用类似 SECRET_KEY 参数的东西,因为我使用基于 cookie 加载会话的节点会话模块。
唯一的方法是让站点 A 发回包含域 A 和域 B 的通配符 cookie。 请记住,如果您的域 A 和域 B 都是二级域,则这样做可能会打开一个很大的安全漏洞。
或者使域 B 上的代码使用客户端的浏览器作为域 A 的通道。 您可以将 Javascript 代码从域 B 发送到用户浏览器,该浏览器将使用域 A 上的 API 并将结果发送回域 B。 但是,即使在这种情况下,您也必须注意两侧的 CORS 标头。否则浏览器将不信任来自域 B 的代码向域 A 发送请求。