0

ajax呼び出し(url:BaseHref + "api / v1 / Post /" + postId +'/ PostTracks')を介してRestfulServerにアクセスし、DataObjectリレーションを取得しています。

  public function PostTracks(){
    $controller = Controller::curr();
    $request = $controller->getRequest();
    $passkey = $request->getHeader('passkey');

    $tracks = $this->owner->Tracks();
    $set    = array();

    foreach($tracks as $track)
    {
            $set[] = array(
                    'm4aURL'    => $track->m4a()->URL,
                    'oggURL'    => $track->ogg()->URL,
                    'Title'     => $track->Title
            );
    }
    $this->outputJSON(200, $set);
}

メソッドの上部で、beforeSendメソッドを介してajax呼び出しで送信したカスタムヘッダーの値を取得しようとしています。ヘッダーがRestfulServerコントローラーへのリクエストで送信されることを確認しましたが、値を取得するのに問題があります。$passkeyの値に対して何も取得していません。

RestfulServerコントローラーからヘッダー情報を取得するにはどうすればよいですか。RestfulServerがControllerから拡張されているため、getRequestが機能しない理由がわかりません。

4

2 に答える 2

1

を使用print_r($request->getHeaders())して、リクエストに添付されたすべてのヘッダーを表示できます。いずれにせよ、問題は「パスキー」のケーシングにあると思われます。デフォルトでは、SilverStripe はヘッダー名を CamelCaseFormat で解析します。そのため、ヘッダーはPasskeyorと呼ばれると思われPassKeyます。

于 2013-02-07T22:24:16.107 に答える
1

リクエストの問題をデバッグする良い方法の 1 つは、Debug::dump($request->getHeaders()) または Debug::log($request->getHeaders()) を使用することです。

後者はログ ファイルをサイトに書き込み、"tail -f debug.log" によってサーバーへのターミナル アクセスがあるかどうかを追跡するか、それらを何度もダウンロードします。

そうすれば、URL に直接アクセスできない場合にログアウトするものを確認できます。

于 2013-02-08T15:07:17.363 に答える