2016-01-25 44 views
0

我對如何在服務器之間發送cookie數據有點幼稚。我知道在HTTP請求中使用Set-Cookie。在服務器之間發送cookie與發送標題

現在,我在服務器之間發送一個標頭,用於授權目的,以便一臺服務器與另一臺服務器進行授權。但是我想知道,如果cookie在這種情況下的行爲與標題不同,是否有利用cookie。從我讀過的內容來看,餅乾和標題對大多數目的來說都是一樣的。

使用兩個Node.js服務器,一個是Web服務器,另一個是API服務器,有什麼理由爲什麼發送一個cookie比一個非常規的非cookie頭更好?

回答

1

「cookie」表示客戶端和服務器之間的共享狀態。如前所述,設置cookie值的方法是使用Set-Cookie標題。傳遞已經設置的值的方式是使用Cookie標題。

Cookie通常與網絡瀏覽器相關聯,作爲跟蹤和識別現有用戶的工具。我從來沒有見過用於服務器到服務器通信的cookie。

Authorization標頭適合傳遞編碼或加密的字符串。

因此,例如,你可能會看到:

Authorization: "Basic dXNlcm5hbWU6cGFzc3dvcmQ="

在這種情況下,該值是編碼字符串中的Base64「用戶名:密碼」

我就不會擔心什麼頭太多了你用。您可以自己組裝自己的x-my-awesome-auth-header:它通常以「x」作爲自定義標題的前綴。

要考慮的重要事情是標題值包含的內容。如果您通過普通的http進行通信,請確保您已加密。

也可以考慮使用開源標準,通過加密的數據,如JWT

編輯:要回答你的問題,是沒有任何理由發送的cookie是更好?當涉及到服務器到服務器的通信時,使用Cookies實際上更糟糕,因爲這些服務器必須與其他服務器保持狀態。例如。當A與B交談時,A必須記住B再次說話時所說的內容。通常情況下,服務器到服務器之間的通信是無狀態的,這意味着您可以在每次事務之後丟棄與授權和許可有關的數據。每筆交易都必須經過完整的授權和許可解決流程。它更容易編碼,並且只要通過加密保護您的安全,就不會受到任何處罰

1

是的,「cookies」只是Cookie: HTTP標頭和相應的Set-Cookie:標題的行話。所以他們最終是一樣的基本的東西。許多API使用略多的語義Authorization:標題,所以這將是一個很好的開始。