2011-09-22 111 views
0

由於谷歌瀏覽器中的一個奇怪的原因,我的一個腳本存在嚴重問題。我正在建立一個需要twitter/facebook連接的頁面。基本上你正在做的是:谷歌瀏覽器的Twitter中的奇怪會話行爲OAuth

  1. 訪問頁面(在Facebook和Twitter類中開始,一些會話設置被設定等)
  2. 點擊連接按鈕的其中一個網絡,你的連接
  3. 填充詳情
  4. 在我們的網站註冊(點擊提交)。

現在在IE/Firefox/Safari中一切都很完美,但是Chrome正在做一些非常瘋狂的事情。我想問一下你訪問這個頁面:

不再重要

最有可能在Firefox/IE/Safari瀏覽器將只顯示一個空的$ _SESSION變量的var_dump()。起初,這是它在Chrome aswel中所做的,但是!如果您在Firefox/IE/Safari中刷新頁面一次,會話仍然是空的,但在Chrome中它已經顯示了一些密鑰。

我絕對不知道這些地方密鑰來自..這是viewsessions.php的內容:

session_start(); 
echo '<pre>'; 
var_dump($_SESSION); 

if(isset($_GET['u'])) { 
    unset($_SESSION); 
} 

據我所知,也不會發生任何事,除了上述和Firefox/IE/Safari正在顯示正確的行爲。

如果一切正常,但是'requestoken_XXXX'會話密鑰屬於Twitter OAuth ..並且由於每個頁面上的requesttoken被刷新,認證重定向到我的網站無法找到一個匹配的令牌,因此不驗證身份驗證。

任何人都可以看到發生了什麼?是否在後面調用某個頁面?這是一些已知的與Chrome相關的問題嗎?我真的沒有任何線索離開這可能是..

在此先感謝。

回答

0

問題解決了..

出於某種原因,這個文件:

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    Options -Indexes 

    RewriteEngine On 
    RewriteBase/

    # Bestaande bestanden of mappen uitsluiten 
    RewriteCond %{REQUEST_FILENAME} -f [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule ^(.*?)$ $1 [L] 

    RewriteRule ^start/$ login.php [L,QSA] 
    RewriteRule ^logout/$ logout.php [L,QSA] 
    RewriteRule ^timeline/$ timeline.php [L,QSA] 

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

</IfModule> 

難道有一定的要求的index.php(我猜的......),似乎有點奇怪,因爲我已經指出,如果這是一個現有的文件或目錄,它應該只是打開文件:RewriteRule ^(.*?)$ $1 [L],我也將其標記爲最後一條規則。

刪除這最後一個RewriteRule解決了這個問題。仍然不知道爲什麼Chrome推翻了[L]參數..如果有人能解釋它,那將是非常棒的。