Silverstripe Restful服务器上的getRequest方法

Silverstripe Restful服务器上的getRequest方法,silverstripe,Silverstripe,我通过ajax调用(url:BaseHref+“api/v1/Post/”+postId+“/PostTracks”)点击RestfulServer来检索数据对象关系: public function PostTracks(){ $controller = Controller::curr(); $request = $controller->getRequest(); $passkey = $request->getHeader('passkey');

我通过ajax调用(url:BaseHref+“api/v1/Post/”+postId+“/PostTracks”)点击RestfulServer来检索数据对象关系:

  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 controller发出的请求中发送的,但在获取值时遇到了问题。对于$passkey的值,我没有获得任何信息


如何从RestfulServer控制器获取标头信息。我不明白为什么getRequest不工作,因为RestfulServer从控制器扩展而来。

您可以使用
print\r($request->getHeaders())
查看附加到请求的所有标头。无论如何,我怀疑问题在于“passkey”的大小写。默认情况下,SilverStripe将以CamelCaseFormat解析标头名称-因此我怀疑标头将被称为
Passkey
Passkey

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

后者将向站点写入一个日志文件,如果您通过“tail-f debug.log”对服务器具有终端访问权限,或者一次又一次地下载它们,则可以跟踪该日志文件


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

谢谢AJ。这就成功了。也谢谢您提供的调试提示。