首页 > 解决方案 > Laravel 请求“hasHeader”不区分大小写吗?

问题描述

我正在编写一个中间件来根据是否存在标头来更改响应:

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,最终在 trait 中引出了这个方法InteractsWithInput

protected function retrieveItem($source, $key, $default)
{
    if (is_null($key)) {
        return $this->$source->all();
    }

    return $this->$source->get($key, $default);
}

我无法进一步了解源代码是否将标头转换为小写,或者它是否在沿线某处进行了规范化。

Laravel 是否将它们转换为小写?

考虑到 HTTP 标准对标头不区分大小写,$request->hasHeader('Content-Type')如果客户端将标头发送为 ,类似的东西仍然有效content-type吗?

标签: phplaravel

解决方案


HTTP 标头不区分大小写,并且 Laravel hasHeader() 正在进行,这里没有任何严格的检查。


推荐阅读