我正在使用Express on Node开发一个Web应用程序。我正在尝试实现代理登录功能,用户直接登录并在登录我的站点后重定向到另一个站点。
在我的路由功能中,我正在编写以下代码
res.cookie('fanws','value');
res.redirect('http://hostname/path'); //其他网站
我在chrome中使用了调试器,发现cookie没有被添加到重定向页面中。
我在localhost上运行应用程序,我重定向到的网站托管在本地网络上的另一台服务器上。
如何在重定向路径上添加Cookie?
答案 0 :(得分:5)
简而言之,您不能在浏览器中设置cookie或为您不控制服务器的站点读取cookie,或者在该页面中拥有您自己的客户端代码。出于安全原因,cookie系统是出于故意的目的而设计的。因此,从http://www.domain1.com
的页面或服务器,您无法读取或设置其他域的Cookie。
如果两个域的页面中都有代码,那么您可以将一些信息传递给第二页(最有可能作为查询参数),告知重定向页面中的代码采取某些操作(如设置cookie) ,但是你必须控制第二页中的Javascript或服务器才能做到这一点。
nodejs代码中的cookie依赖于当前请求/响应,这意味着当浏览器处理当前请求的响应时,它与浏览器中的该域相关联。
res.redirect(...)
返回带有新网址的302
响应,作为对当前请求的响应。然后,浏览器会看到此响应代码并向新页面发出新的Web请求。除非您拥有该域的服务器,否则无法从该服务器为该新域设置cookie。这是cookie安全性的一个基本方面。 Cookie只能通过浏览器中的Javascript从与cookie相同的来源页面访问,服务器只能为他们正在处理的特定请求中的特定来源设置Cookie。