CI框架解決jsonp跨域的問題

現象:

       如果js端用了jsonp跨域的請求方式,並且CI配置文件設置了$config['sess_time_to_update'] = xxx;

那麼,在xxx秒後點擊頁面發送請求,帳號會被退出;


原因:

     在文件:system/libraries/Session/Session.php構造函數中有這樣一段:


if ((empty($_SERVER['HTTP_X_REQUESTED_WITH']) OR strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest')
			&& ($regenerate_time = config_item('sess_time_to_update')) > 0
		)
		{
			if ( ! isset($_SESSION['__ci_last_regenerate']))
			{
		$_SESSION['__ci_last_regenerate'] = time();
			}
			elseif ($_SESSION['__ci_last_regenerate'] < (time() - $regenerate_time)){
				$this->sess_regenerate((bool) config_item('sess_regenerate_destroy'));
			}
		}
     如果不是ajax請求,超過xxx秒CI會重新生成session_id;


解決:

     對jsonp請求特殊處理 $_SERVER['HTTP_X_REQUESTED_WITH']) = 'xmlhttprequest';


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章