0

我正在通过 ajax 调用访问 RestfulServer(网址:BaseHref + "api/v1/Post/" + postId + '/PostTracks' 以检索 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 控制器获取标头信息。我不明白为什么 getRequest 不起作用,因为 RestfulServer 从 Controller 扩展。

4

2 回答 2

1

您可以使用print_r($request->getHeaders())查看附加到请求的所有标头。无论如何,我怀疑问题出在“密码”的大小写上。默认情况下,SilverStripe 将解析 CamelCaseFormat 中的标题名称 - 所以我怀疑标题将被称为Passkeyor PassKey

于 2013-02-07T22:24:16.107 回答
1

调试请求问题的一种好方法是使用 Debug::dump($request->getHeaders()) 或 Debug::log($request->getHeaders())。

后者会将日志文件写入站点,然后您可以通过“tail -f debug.log”跟踪您是否可以通过终端访问服务器,或者一次又一次地下载它们。

这样,当您无法直接访问 url 时,您就可以看到注销的内容。

于 2013-02-08T15:07:17.363 回答