javascript - 如何使用其他站点的登录信息发出 JavaScript 请求

标签 javascript node.js cookies cross-domain

我有以下场景。我有一个正在运行 node.js 的网站 A,用户可以在其中登录,然后使用各种 javascript API 调用执行任务。当他们登录时,我为他们分配一个在发出所有网络请求时使用的 cookie,这样我就可以跟踪他们已经发出了多少请求。

现在我希望另一个站点 B 也能够使用站点 A 提供的 API。我的问题是站点 B 上的用户如何获取允许他们向站点 A 发出请求的 cookie,而无需转到站点 A 并在那里登录。如果我发出跨域 GET 请求以使用某些默认帐户登录,我无法从中提取响应中分配的 cookie。

如果可能的话,我会避免在从站点 B 到 A 的 get 请求中使用类似于 SECRET_KEY 参数的参数,因为我使用基于 cookie 加载 session 的 Node session 模块。

最佳答案

唯一的方法是让站点 A 发回包含域 A 和域 B 的通配符 cookie。请记住,如果您的域 A 和域 B 都存在,那么这样做可能会造成一个很大的安全漏洞。都是二级域名。

或者让域 B 上的代码使用客户端的浏览器作为到域 A 的 channel 。您可以将 Javascript 代码从域 B 发送到用户浏览器,该代码将使用域 A 上的 API 并将结果传回域 B。但是,即使在这种情况下,您必须处理两侧的 CORS header 。否则浏览器将不会信任域 B 中的代码向域 A 发送请求。

关于javascript - 如何使用其他站点的登录信息发出 JavaScript 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37493137/

相关文章:

javascript - 两个不同的 POST 请求正在使用同一个变量

java - Cookie http 仅适用于 spring security 和 servlet 2.5?

javascript - 如何将值从cshtml文件传递给JS

javascript - 有没有办法从 Web 应用程序读取本地 netcdf 文件?

javascript - 如何刷新requirejs模块?

node.js - 更新npm并安装docpad后出现权限错误

javascript - navigator.cookieEnabled 在本地主机的 IE9 中不起作用

php - 未从 SQL 查询中获取所有结果

javascript - 将数组转换为 JSON

javascript - SAAS 每席位认证