对于每个时间$这 - >会话级> set_userdata()或$这 - >会话级> set_flashdata()在我的控制器使用,另一个相同的“设置Cookie:ci_session = ...”被添加到HTTP头中的服务器发送。
多的Set-Cookie领域,具有相同的cookie的名字,在HTTP头根据rfc6265是不行的。
那么,有没有办法用笨会话没有它创建多个相同的“设置Cookie:” S?
(我使用卷曲验证HTTP标头)
对于每个时间$这 - >会话级> set_userdata()或$这 - >会话级> set_flashdata()在我的控制器使用,另一个相同的“设置Cookie:ci_session = ...”被添加到HTTP头中的服务器发送。
多的Set-Cookie领域,具有相同的cookie的名字,在HTTP头根据rfc6265是不行的。
那么,有没有办法用笨会话没有它创建多个相同的“设置Cookie:” S?
(我使用卷曲验证HTTP标头)
检查https://github.com/EllisLab/CodeIgniter/pull/1780
默认情况下使用cookie会话处理器(加密的或未加密的),CI发送当整个“设置Cookie”标题中的每个新的值被写入到所述会话时间。 这导致了多个头被发送到客户端。
这是一个问题,因为如果有太多的值写入到会话,HTTP头会变得非常大,某些Web服务器将拒绝响应。 (见http://wiki.nginx.org/HttpProxyModule#proxy_buffer_size )
解决的办法是只跑“sess_save()”之后的所有其他报头输出的页面内容之前发送一次。
我相信你可以传递一个数组$this->session->set_userdata();
我没有测试此代码,所以它仅仅是一个建议,尝试这些方针的东西:
$data = array(
'whatever' => 'somevalue',
'youget' => 'theidea'
);
$this->session->set_userdata($data);
注意:当我说我没有测试的代码..我已经使用这个代码,我知道它的作品,我的意思是我还没有测试它是否会减少发送头的量。
在我的情况下,错误是在浏览器(Chrome)。 它存储的cookie 2发送既能服务器,这使服务器创建新的会话所有的时间。 我通过明确在浏览器的cookie固定它。 希望它可以帮助别人。 :)