我有一个使用Laravel 4构建的以API为中心的设置,包括REST API,前端和管理面板。前端和管理员都使用内部请求来使用API。
我发出这样的内部请求:
$request = Request::create($endpoint, $method, $parameters, $cookies, $files, $server, $content);
$this->response = Route::dispatch($request);
一切正常。
现在我想使用an approach similar to AWS来保护API,当我创建上面的请求时,我还要设置一些自定义标头(api密钥,签名,时间戳)。
我还没有找到将标头添加到自定义请求的方法。使用内部请求时是否可以这样做?
答案 0 :(得分:5)
结果设置标题就像执行
一样简单$request->headers->set('MyHeaderName', 'header value');
在发送请求之前。
捕获(以及我尝试时无效的原因)是我必须使用的API
Route::getCurrentRequest()
获取我的自定义请求(而不是只询问请求外观):
$request = Route::getCurrentRequest();
$all_headers = $request->header();
$specific_header = $request->header("SomeHeaderName");
答案 1 :(得分:0)
您可以使用filters.php
App::after(function($request, $response)
{
$response->headers->set('key','value');
});
如果您发现自己使用了很多这些内容,将它们移到自己的service provider中可能会提供更好的结构。