【问题标题】:Is Laravel Request `hasHeader` case-insensitive?Laravel 请求“hasHeader”不区分大小写吗?
【发布时间】: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
  • 是的,没错。只要单词正确,您可以随心所欲地编写它(区分大小写)。

标签: php laravel


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-24
    • 2014-02-15
    • 1970-01-01
    • 2023-03-25
    • 2015-06-14
    • 2015-07-05
    • 1970-01-01
    • 2012-10-03
    相关资源
    最近更新 更多