2014-08-28 64 views
4

我在網站上使用CORS。CORS與PHP會話

代碼示例:

header("Access-Control-Allow-Origin: *"); 
session_start(); 
$session_id = session_id(); 

此代碼工作正常,但它每次都返回一個新的會話ID。

如何在這種情況下維護會話數據?

回答

5

雖然您允許使用Access-Control-Allow-Origin標頭從外部域進行訪問,但會話本身是基於cookie的。

如果發出請求的腳本是從外部域傳遞的,它將無法讀取cookie並將其傳遞到您的服務器。

解決方案:從與AJAX服務相同的上下文(即相同的協議/域/端口)發送進行調用的JS。還要確保cookie本身不限於不同的子域或路徑。

不要嘗試通過POST或GET請求傳遞會話標識符,這會使您的應用程序容易受到CSRF的影響。

順便說一句,將允許的原點設置爲*也是不鼓勵的,因爲它也可以用於XSS/CSRF,並與其他技術結合使用。請限制對第三方域的請求。

最後但並非最不重要的,您可能還想通過HTTP OPTIONS查看預檢請求的主題。