ОБНОВИТЬ:
Мне интересно, может ли кто-нибудь просмотреть мой ответ и посмотреть, есть ли в нем какие-либо дыры.
Существует хорошо документированная проблема при использовании кодировщика и сеансов на:
Дублированные поля «set-cookie: ci-session» в заголовке с помощью codeigniter
В итоге codeigniter делает set-cookie каждый раз, когда вызывается set_userdata.
Я нашел частичное решение по адресу:
http://ha17.com/1745-bigip-f5-header-max-size-collides-with-codeigniters-bizarre-session-class/
Единственная проблема с этим решением заключается в том, что код необходимо вставлять повсюду. Есть ли простой способ очистить все заголовки? Я немного изменил код, чтобы удалить php-ошибки, но есть ли способ использовать крючок или что-то в этом роде?
<?php class MY_Controller extends CI_Controller { public function __construct() { parent:: __construct(); } //See (modified from) http://ha17.com/1745-bigip-f5-header-max-size-collides-with-codeigniters-bizarre-session-class/ protected function _removeDuplicateCookieHeaders () { // clean up all the cookies that are set... $headers = headers_list(); $cookies_to_output = array (); $header_session_cookie = ''; $session_cookie_name = $this->config->item('sess_cookie_name'); foreach ($headers as $header) { list ($header_type, $data) = explode (':', $header, 2); $header_type = trim ($header_type); $data = trim ($data); if (strtolower ($header_type) == 'set-cookie') { header_remove ('Set-Cookie'); $cookie_value = current(explode (';', $data)); list ($key, $val) = explode ('=', $cookie_value); $key = trim ($key); if ($key == $session_cookie_name) { // OVERWRITE IT (yes! do it!) $header_session_cookie = $data; continue; } else { // Not a session related cookie, add it as normal. Might be a CSRF or some other cookie we are setting $cookies_to_output[] = array ('header_type' => $header_type, 'data' => $data); } } } if ( ! empty ($header_session_cookie)) { $cookies_to_output[] = array ('header_type' => 'Set-Cookie', 'data' => $header_session_cookie); } foreach ($cookies_to_output as $cookie) { header ("{$cookie['header_type']}: {$cookie['data']}", false); } } }