**Use case**
ClickHouse as a web server becomes a viable scenario.
(At least in backoffice).

**Describe the solution you'd like**
Add this field.

**Additional context**
It's in question how to name it. The original HTTP specs has the famous typo in it and name it `referer`. While JavaScript has this typo fixed and name it `referrer`.

{
    setThreadName("HTTPHandler");
    ThreadStatus thread_status;
    
    
    Context context = server.context();
    
    std::optional<CurrentThread::QueryScope> query_scope;
    Output used_output;
    
    bool with_stacktrace = false;
    try
    {
        response.setContentType("text/plain; charset=UTF-8");
        response.set("X-ClickHouse-Server-Display-Name", server_display_name);
        
        if (request.getVersion() == Poco::Net::HTTPServerRequest::HTTP_1_1)
            response.setChunkedTransferEncoding(true);
        HTMLForm params(request);
        with_stacktrace = params.getParsed<bool>("stacktrace", false);
        
        if (request.getMethod() == Poco::Net::HTTPRequest::HTTP_POST && !request.getChunkedTransferEncoding() &&
            !request.hasContentLength())
        {
            throw Exception("The Transfer-Encoding is not chunked and there is no Content-Length header for POST request", ErrorCodes::HTTP_LENGTH_REQUIRED);
        }
        processQuery(context, request, params, response, used_output, query_scope);
        LOG_DEBUG(log, "Done processing query");