这是与Ember js指南中的RESTAdapter代码:
App.ApplicationAdapter = DS.RESTAdapter.extend({
namespace: 'emberboot/api',
headers: {
'API_KEY': 'secret key'
}
});
这是从SLIM PHP获取标头的代码。 get header函数在此处记录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数据部分没有任何问题,因为标题就在那里。但记录文件:headers.txt 根本不包含任何文字 - 为空!
UDATED - @engvrdr解决的答案。使用破折号而不是下划线
这是RESTAdapter代码UPDATED!
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);
;
;
答案 0 :(得分:2)
我不是一个苗条的专家,但你可以试试吗? (在文档请求中看起来像属性而不是方法)
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,它将起作用。