As sessões do Codeigniter 3.0.3 não são persistentes

Estou tendo um problema muito estranho, as sessões no Codeigniter 3.0.3 não são salvas para o próximo pedido. Cada vez que um pedido é feito, ele cria um novo registro de session e não o usa na próxima vez.

A parte estranha é, funciona na versão HTTPS do site, mas não no HTTP .

O cenário: na página de login do meu site, faço uma chamada AJAX (nesta chamada, eu configurei algumas variables ​​de session e flashdatas). Uma vez que recebo uma mensagem de sucesso, recarrego a página da página de perfil.

Todo esse processo não funciona quando uso HTTP, mas HTTPS.

Qualquer ajuda seria apreciada.

EDITAR v1: Adição, mesmo CSRF não funciona em HTTP. Desativar para testar o sistema.

EDITAR v2: Código solicitado pelo @DFriend

config.php

$config['sess_driver'] = 'database'; $config['sess_cookie_name'] = 'jupiter'; $config['sess_expiration'] = 0; $config['sess_save_path'] = "hkr_sessions"; $config['sess_match_ip'] = TRUE; $config['sess_time_to_update'] = 300; $config['sess_regenerate_destroy'] = FALSE; $config['cookie_prefix'] = ''; $config['cookie_domain'] = '.jupiter.rjv.me'; $config['cookie_path'] = '/'; $config['cookie_secure'] = TRUE; // PS: tried FALSE version as well, but no change. $config['cookie_httponly'] = FALSE; 

Controlador User.php

 public function login_required() { if (!$this->logged_in()) { $this->session->set_flashdata("login_error", "You have to be logged in to see this page."); $this->session->set_userdata('redirect_back', $this->agent->referrer()); redirectt('/login'); } } 

route.php

 $route['login/required'] = 'user/login_required'; 

Um método simples assim, quando navego para http://domain.ltd/login/required redireciona para http://domain.ltd/login com mensagem de impressão como “Você precisa estar logado para ver esta página”. . Uma vez que o usuário inicie session, redireciona o usuário de volta para a página anteriormente.

No meu caso, redireciona para a página /login , mas não imprime a mensagem flashdata.

Aqui está MY_Controller.php

 class MY_Controller extends CI_Controller { protected $logged_in = NULL; protected $is_ajax = NULL; protected $user_id = NULL; public function __construct() { parent::__construct(); log_message("DEBUG", "session variables: " . print_r($this->session->all_userdata(), true)); $this->logged_in = $this->session->userdata('logged_in'); $this->is_ajax = $this->input->is_ajax_request(); $this->user_id = $this->session->userdata('user_id'); } } 

Como você vê, imprimo as variables ​​da session em cada solicitação.

Aqui está o resultado das sessões através da solicitação HTTP:

 DEBUG - 2016-01-03 07:17:27 --> session variables: Array ( [__ci_last_regenerate] => 1451805447 ) 

Aqui está a saída das sessões através da solicitação HTTPS:

 DEBUG - 2016-01-03 07:19:44 --> session variables: Array ( [__ci_last_regenerate] => 1451805564 [redirect_back] => https://jupiter.rjv.me/book/1497-sefiller-viktor-mari-huqo ) 

Não alterei nenhum código, apenas tentei em ambos os pedidos, HTTP e HTTPS. As saídas da session são diferentes. Um não guarda, o outro faz. Espero que isso ajude você a identificar o problema.

Na verdade eu estava modificando headers no meu arquivo .htaccess e uma regra estava causando o problema. Veja a linha comentada – essa linha foi o problema.

  Header append Vary User-Agent env=!dont-vary Header set X-XSS-Protection: "1; mode=block" Header unset Server Header set X-Content-Security-Policy "allow 'self';" # Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure