操作
Bug(バグ) #3211
未完了モバイルのIP帯域でなくUAが携帯である条件で index.php にアクセスするとリダイレクトの無限ループが発生する
開始日:
2012-09-27
期日:
進捗率:
0%
予定工数:
3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)
説明
現象¶
- モバイルのIP帯域でなく、UAが携帯である条件で index.php にアクセスするとリダイレクトのループが発生する
- 追加条件:管理画面の「携帯電話のIP帯域設定」を「携帯電話のIP帯域をチェックする」に設定する
原因¶
- fa249a6d により上記問題が混入された
- 挙動
- index.php へのアクセスでは携帯端末と判別されるため、mobile_frontend アプリケーションが呼び出される
- sfDenyFromNonMobileFilter::execute() の 44行目の分岐では isMobile() の判別は false であり、isErrorAction() の判別も false であるので、PCへのリダイレクトの条件に当てはまる
- generatePcFrontendUrl() でURLが生成されるが、URLは現在アクセスしているものと同じURLが生成される
- リダイレクトが実施されるが、index.php へのアクセスとなり、同じ条件であることは変わらないため無限ループが発生する
本来であれば、opWebRequest::isMobile() と opMobileUserAgent::getInstance()->getMobile()->isNonMobile() で矛盾しない結果となるのがよいのではないかと考えられるが、適切な措置は思いつかない。。
修正内容¶
操作