Flashdata在服务器上托管但在本地工作时无法在Chrome上运行

时间:2013-10-30 01:28:59

标签: codeigniter session

我使用flashdata来存储我的搜索查询,以便在用户导航到下一页时我可以检索它。

这就是我存储flashdata的方式

$this->session->set_flashdata('searchQuery', $queryStr);

这就是我检索flashdata的方法。

$queryStr = $this->session->flashdata('searchQuery');

Flashdata在本地工作正常,但是当我在我的服务器上托管它时,它在Chrome(Windows)和Chrome(Android)上无效,但适用于IE(Windows)。它也适用于Chrome(iOS)。我也做了一个测试用例,它只适用于IE(Windows)和Chrome(iOS)。谁知道什么是错的?

class Flashdata extends MY_Controller {
    function __construct()
    {
        parent::__construct();

        $this->load->library('session');
    }

    function index()
    {
        if ($var = $this->session->flashdata('test'))
        {
            echo "Found data: $var";
        }
        else
        {
            $this->session->set_flashdata('test', 'flash data test');
            echo "Set data";
        }
    }
}

这是我的.htaccess文件

# Options
Options -Multiviews
Options +FollowSymLinks

#Enable mod rewrite
RewriteEngine On
#the location of the root of your site
#if writing for subdirectories, you would enter /subdirectory
RewriteBase /

#Removes access to CodeIgniter system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#This last condition enables access to the images and css
#folders, and the robots.txt file
RewriteCond $1 !^(index\.php|images|robots\.txt|css)

RewriteRule ^(.*)$ index.php?/$1 [L]   

1 个答案:

答案 0 :(得分:3)

问题很可能是由RewriteCond

中的最后.htaccess引起的
#This last condition enables access to the images and css
#folders, and the robots.txt file
RewriteCond $1 !^(index\.php|images|robots\.txt|css)

以上内容用于列出不应路由到您的应用程序的请求index.php。

可能发生的情况是您的网站包含您不希望路由到您的应用程序的图标/ css / image /等请求。当此请求通过您的应用程序时,它会截取您的flashdata(仅适用于下一个请求),这意味着它对您的页面实际请求不可用。

这方面的例子通常是favicon.ico,但还有其他情况。我认为即使未在<head>中指定,也会请求Chrome图标。

您可以通过将favicon.ico添加到已排除的请求列表来解决此问题:

RewriteCond $1 !^(favicon\.ico|index\.php|images|robots\.txt|css)

这可能不是由favicon.ico引起的,而是另一个完全不同的请求。最简单的方法是将所有请求记录到文件中,并检查代码中当前发生的情况。