2009-06-09 9 views
2

WordPressサイトのAJAX呼び出しでユーザーをリモートログインするために使用されるCakePHPプロジェクトのusers_controller.phpにメソッドがあります。このメソッドはFirefox経由で呼び出されたときに問題なく動作しますが、AJAX経由で、またはIE8またはSafariのブラウザから直接呼び出すと、単にログインしません.Auth-> login()メソッドはtrueが返されます。いいですが、ログインしていません。アイデアはありますか?IE8 + SafariのCakePHP認証コンポーネント "login"メソッドの失敗

function remoteLogin($key) 
{ 
    # this method should only be called via AJAX 
    $this->layout = 'ajax'; 

    $matching_key = '***'; 

    if($key == $matching_key) 
    { 
    # auto-login service account 
    $data['User']['username'] = '***'; 
    $data['User']['password'] = $this->Auth->password('***'); 

    $this->Auth->login($data); 
    } 
} 

注:私は今、この方法は、どちらかのオペラでは動作しないことを確認しました。私は正当に混乱している。

+1

何OKでしょう、具体的には、FirefoxはIEなどをしていないですか?この関数の完了後にUIが更新されていますか?また、関数自体ではなく、この関数を呼び出すために使用しているjavascriptに問題があるかもしれないように思えます(これはかなり単純なPHPだからです)。より詳細な情報を提供するだけでなく、関連するjavascriptを使用すると診断が容易になります。 – inkedmn

答えて

0

クッキーを確認して、期待通りにそれらが通過していることを確認してください。 Fiddlerは、これらのAJAXの問題を把握するためにhttpトラフィックを確認するのに役立ちます。

www.domain.comとdomain.comは同じ場所にありますか? これは、CakePHP/IEの問題に関連する可能性があります。

ドメインレベルのすべてのCookieを削除し、動作するか確認してください。

IEでは、どのドメインクッキーもサブドメインクッキーよりも優先されます。したがって、domain.comに行き、その後www.domain.comにアクセスすると、セッションログイン、ログアウトを一日中リセットできますが、IEはwww.domain.comのCookieを無視して元のアドレスを使用し続けますdomain.com one。 Cookieの有効範囲をdomain.comに設定/強制させるための古いバージョンのCake用のパッチをwww.domain.comとしてサイトにアクセスしていても書いています。

0

Safariは、同じトップドメインの下の「兄弟」の間でも、クロスドメインのajaxをブロックします。例えば。 helppages.example.comのajaxを使用してapp.example.comにdivをロードさせることはできません。クッキーを忘れて、私はちょうどajaxを使用してロードされたプレーンhtmlを話している。

0
  • 私の問題はあなたのドメインだと思います。 例:IEまたはいくつかのブラウザのようなあなたのドメイン場合は動作しません:abc_def.com、...
  • ドメインをチェックして、abcdef.com =のようにそれを変更してください>それは
関連する問題