【问题标题】:Fail to access ember-data REST request headers from PHP SLIM framework无法从 PHP SLIM 框架访问 ember-data REST 请求标头
【发布时间】:2014-09-02 10:58:29
【问题描述】:

这是 Ember js 指南中的 RESTAdapter 代码:

App.ApplicationAdapter = DS.RESTAdapter.extend({
   namespace: 'emberboot/api',

   headers: {
      'API_KEY': 'secret key'
  }
});

这是从 SLIM PHP 获取标头的代码。此处记录了获取标头函数http://docs.slimframework.com/#Request-Headers

// - http://localhost/emberboot/api/posts
// - $app->get('/posts', 'getPosts'); //get all post

function getPosts() 
{
    $request = \Slim\Slim::getInstance()->request();
    $key = $request->headers->get('API_KEY');

    //logging
    $file = 'headers.txt';
    file_put_contents($file, $key);
    ;
    ;

这是来自 Chrome 开发者工具:

很明显,Ember-data 部分没有任何问题,因为标题在那里。但是 日志文件:headers.txt 根本不包含任何文本 - 空!

更新 - 由@engvrdr 解决的答案。使用破折号代替下划线

这是更新的 RESTAdapter 代码!

App.ApplicationAdapter = DS.RESTAdapter.extend({
   namespace: 'emberboot/api',

   headers: {
      'API-KEY': 'secret key'
  }
});

Slim PHP 代码更新:

function getPosts() 
{
    $request = \Slim\Slim::getInstance()->request();
    $headers = $request->headers;
    $apiKey = $headers->get('API-KEY');
    $file = 'headers.txt';
    file_put_contents($file, $apiKey);
    ;
    ;

【问题讨论】:

    标签: php rest ember-data slim


    【解决方案1】:

    我不是一个苗条的专家,但你能试试吗? (在文档中请求似乎是属性而不是方法)

    function getPosts() 
    {
    $app = \Slim\Slim::getInstance();
    $key = $app->request->headers->get('API-KEY');
    
    //logging
    $file = 'headers.txt';
    file_put_contents($file, $key);
    

    编辑: 我发现这是关于 HTTP 标头名称中的下划线 (_) 的问题 (Why underscores are forbidden in HTTP header names)

    如果你把它改成 API-KEY 就可以了。

    【讨论】:

    • 仍然失败 - headers.txt 为空
    • @rosely-kumoi 我已经更新了答案你可以再试一次吗?
    • 仍然失败 - 我已经在 Slim 网站上提交了问题帖子 - help.slimframework.com - 等待他们的回复
    • w00t 使用破折号确实有效。谢谢你,你太棒了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 2013-05-09
    相关资源
    最近更新 更多