簡體   English   中英

如何使用Express js中的cookie重定向到不同的域

[英]How to redirect to different domain with a cookie in Express js

我正在 Node.js 上使用 Express 開發一個 Web 應用程序。 我正在嘗試實現代理登錄功能,其中用戶在登錄到我的站點后直接登錄並重定向到另一個站點。

在我的路由功能中,我正在編寫以下代碼
res.cookie('fanws', 'value');
res.redirect(' http://hostname/path '); // 另一個站點

我在 chrome 中使用了調試器,發現 cookie 沒有被添加到重定向頁面中。

我在本地主機上運行應用程序,我重定向到的站點托管在本地網絡的另一台服務器上。

我應該怎么做才能在重定向路徑上添加 cookie?

簡而言之,您無法在瀏覽器中設置Cookie或讀取您無法控制服務器或在該頁面中擁有自己的客戶端代碼的網站的Cookie。 出於安全原因,cookie系統是故意設計的。 因此,您無法從http://www.domain1.com的頁面或服務器上讀取或設置其他域的Cookie。

如果兩個域的頁面中都有代碼,則可以將一些信息傳遞給第二個頁面(最有可能作為查詢參數),以告訴重定向頁面中的代碼采取某些操作(例如設置Cookie),但是您必須能夠控制第二頁中的Javascript或服務器才能執行此操作。


您的nodejs代碼中的cookie出現在當前請求/響應上,這意味着當瀏覽器處理當前請求的響應時,該cookie與瀏覽器中的該域相關聯。

res.redirect(...)返回帶有新URL的302響應作為對當前請求的響應。 然后,瀏覽器將看到此響應代碼,並向新頁面發出新的Web請求。 您不能從服務器為該新域設置cookie,除非您也為該域擁有服務器。 這是cookie安全性的基本方面。 只能通過瀏覽器中的Javascript從與Cookie所屬來源相同的頁面訪問Cookie,並且服務器只能在它們正在處理的特定請求中為特定來源設置Cookie。

@jfriend00 很好的解釋。 @Kiran G 您可以在同一個重定向中傳入查詢參數,無需在剛剛發送到查詢參數的 express 中設置 cookie,如下所示。

IE

res.redirect(`http://hostname/path?fanws=${value}`);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM