最近在研究angularjs,想搞個前後端分離,結果發現ajax跨域請求時session丟失了?
前端www.book.com
後端api.book.com
後端設定了
ini_set('session.cookie_domain', ".book.com");header("Access-Control-Allow-Origin:*");
所以現在單純的前端發送ajax請求到後端返回資料是可以獲得到的,
但前端發送請求到後端,後端列印session為null。
array(0) {}
我做了實驗,前端放了個php,test.php
使用www.book.com/test.php訪問,結果是有的
array(2) { ["d2d977c58444271d9c780187e93f80e5login"]=> array(2) { ["verify_code"]=> string(32) "748247cb9c625028d55e6a6bb90f7dc8" ["verify_time"]=> int(1464936279) } ["d2d977c58444271d9c780187e93f80e5resigiter"]=> array(2) { ["verify_code"]=> string(32) "2cfddfe2efaa2a0d78cd20c367df52f7" ["verify_time"]=> int(1464930066) } }
也就是說我在跨次層網域直接存取,是成功能擷取到session的,但在www.book.com的頁面中ajax到api.book.com就拿不到了?
回複內容:
最近在研究angularjs,想搞個前後端分離,結果發現ajax跨域請求時session丟失了?
前端www.book.com
後端api.book.com
後端設定了
ini_set('session.cookie_domain', ".book.com");header("Access-Control-Allow-Origin:*");
所以現在單純的前端發送ajax請求到後端返回資料是可以獲得到的,
但前端發送請求到後端,後端列印session為null。
array(0) {}
我做了實驗,前端放了個php,test.php
使用www.book.com/test.php訪問,結果是有的
array(2) { ["d2d977c58444271d9c780187e93f80e5login"]=> array(2) { ["verify_code"]=> string(32) "748247cb9c625028d55e6a6bb90f7dc8" ["verify_time"]=> int(1464936279) } ["d2d977c58444271d9c780187e93f80e5resigiter"]=> array(2) { ["verify_code"]=> string(32) "2cfddfe2efaa2a0d78cd20c367df52f7" ["verify_time"]=> int(1464930066) } }
也就是說我在跨次層網域直接存取,是成功能擷取到session的,但在www.book.com的頁面中ajax到api.book.com就拿不到了?
需要在CORS的頭裡允許cookie,並且在發起ajax的時候設定withCredentials:true