复制“的Set-Cookie:CI-会议”在报头字段由笨(Duplicated “set-cooki

2019-07-29 01:56发布

对于每个时间$这 - >会话级> set_userdata()或$这 - >会话级> set_flashdata()在我的控制器使用,另一个相同的“设置Cookie:ci_session = ...”被添加到HTTP头中的服务器发送。

多的Set-Cookie领域,具有相同的cookie的名字,在HTTP头根据rfc6265是不行的。

那么,有没有办法用笨会话没有它创建多个相同的“设置Cookie:” S?

(我使用卷曲验证HTTP标头)

Answer 1:

检查https://github.com/EllisLab/CodeIgniter/pull/1780

默认情况下使用cookie会话处理器(加密的或未加密的),CI发送当整个“设置Cookie”标题中的每个新的值被写入到所述会话时间。 这导致了多个头被发送到客户端。

这是一个问题,因为如果有太多的值写入到会话,HTTP头会变得非常大,某些Web服务器将拒绝响应。 (见http://wiki.nginx.org/HttpProxyModule#proxy_buffer_size )

解决的办法是只跑“sess_save()”之后的所有其他报头输出的页面内容之前发送一次。



Answer 2:

我相信你可以传递一个数组$this->session->set_userdata(); 我没有测试此代码,所以它仅仅是一个建议,尝试这些方针的东西:

$data = array(
    'whatever' => 'somevalue',
    'youget' => 'theidea'
);

$this->session->set_userdata($data);

注意:当我说我没有测试的代码..我已经使用这个代码,我知道它的作品,我的意思是我还没有测试它是否会减少发送头的量。



Answer 3:

在我的情况下,错误是在浏览器(Chrome)。 它存储的cookie 2发送既能服务器,这使服务器创建新的会话所有的时间。 我通过明确在浏览器的cookie固定它。 希望它可以帮助别人。 :)



文章来源: Duplicated “set-cookie: ci-session” fields in header by codeigniter