2016-01-23 96 views
3

我的應用程序有一個PHP服務器和一個客戶端(一個JS單頁應用程序)。他們是單獨的項目並部署在不同的域中。客戶端使用服務器公開的RESTful API。有會話/ cookie的CORS請求

此應用程序將與處理身份驗證的第三方集成,因此用戶無法直接登錄。我們的服務器只是收到一個SSO令牌(它有適當的簽名,以便我們驗證其完整性)。

我們還爲所有請求在傳輸層執行安全性。

我想要做的是,一旦SSO令牌得到驗證,就啓動我自己的會話,然後將用戶重定向到客戶端。我認爲,一旦創建了會話,瀏覽器就會自動發送正確的Cookie頭文件給異步API調用,但似乎並非如此。

由於安全原因,故意將其禁用嗎?

回答

3

您必須將withCredentials設置爲true以使跨源XHR請求包含Cookie。

CORS響應也必須說Access-Control-Allow-Credentials: true(這就是爲什麼widthCredentials默認爲false)。

+1

非常感謝。這工作。我接受這個答案而不是@CBroe,因爲這個也提到了'Access-Control-Allow-Credentials'頭。 作爲一個側面說明,'Access-Control-Allow-Origin'不能是通配符('*')。 – cafonso

1

我認爲,一旦會話創建,瀏覽器會自動發出正確的Cookie頭異步API的調用

不爲啓用了CORS-ressources跨域請求(這似乎是這裏的情況下,如果我理解你描述的設置正確。)

要做到這一點,你需要設置withCredentials標誌。

+0

謝謝你的回答。 – cafonso

相關問題