我正在 Node 上使用 Express 开发一个 Web 应用程序。我正在尝试实现代理登录功能,用户在登录我的网站后直接登录并重定向到另一个网站。
在我的路由函数中,我编写了以下代码
res.cookie('fanws', '值');
res.重定向('http://主机名/路径');// 另一个站点
我在 Chrome 中使用调试器,发现 cookie 没有添加到重定向页面中。
我正在本地主机上运行该应用程序,并且我重定向到的网站托管在本地网络上的另一台服务器上。
我应该怎么做才能在重定向路径上添加cookie?
简而言之,您无法在浏览器中设置 cookie,也无法读取您无法控制其服务器或在该页面中拥有自己的客户端代码的站点的 cookie。出于安全原因,cookie 系统特意如此设计。因此,从页面或服务器http://www.domain1.com
,您无法读取或设置其他域的 cookie。
如果您在两个域的页面中都有代码,那么您可以将一些信息传递到第二个页面(最有可能作为查询参数),告诉重定向页面中的代码采取某些操作(例如设置 cookie),但是您必须控制第二个页面中的 Javascript 或服务器才能做到这一点。
Nodejs 代码中的 cookie 会出现在当前请求/响应中,这意味着当浏览器处理当前请求的响应时,它与浏览器中的该域相关联。
res.redirect(...)
返回一个302
响应使用新的 URL 作为对当前请求的响应。然后,浏览器会看到此响应代码并向新页面发出新的 Web 请求。您无法从服务器为该新域设置 cookie,除非您也拥有该域的服务器。这是 cookie 安全性的一个基本方面。 Cookie 只能通过浏览器中的 Javascript 从 Cookie 所属同一来源的页面进行访问,并且服务器只能在它们正在处理的特定请求中为特定来源设置 Cookie。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)