2011-09-22 150 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]参数..如果有人能解释它,那将是非常棒的。