【发布时间】:2021-06-09 16:07:14
【问题描述】:
我正在编写一个中间件来根据是否存在标头来更改响应:
class MiddlewareName
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if($request->hasHeader('referrer')){
// Do stuff
}
return $next($request);
}
}
查看Laravel 8.x中hasHeader方法的源码,最终导致InteractsWithInput trait中的这个方法:
protected function retrieveItem($source, $key, $default)
{
if (is_null($key)) {
return $this->$source->all();
}
return $this->$source->get($key, $default);
}
我无法更深入地了解标题是否被转换为小写,或者它是否在某处被规范化。
Laravel 会将它们转换为小写吗?
考虑到 HTTP 标准对标头不区分大小写,如果客户端将标头发送为 content-type,类似 $request->hasHeader('Content-Type') 的内容是否仍然有效?
【问题讨论】:
-
是的,它会正常工作的。 Laravel 不会对标题做任何魔术。
-
@Andrei 据我所知,它并不关心是
Content-Type还是cOnTeNt-TyPe? -
是的,没错。只要单词正确,您可以随心所欲地编写它(区分大小写)。