> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# http_* session settings

> ClickHouse session settings in the http_* generated group.

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["Version", "Default value", "Comment"];
  const border = "1px solid rgba(128, 128, 128, 0.3)";
  const cell = {
    border,
    padding: "0.25rem 0.5rem",
    textAlign: "start",
    verticalAlign: "top"
  };
  return <details className="not-prose" style={{
    border,
    borderRadius: "0.5rem",
    margin: "0.5rem 0",
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <summary style={{
    cursor: "pointer",
    fontWeight: 600,
    opacity: 0.72
  }}>
        Version history
      </summary>
      <table style={{
    borderCollapse: "collapse",
    width: "100%",
    margin: "0.5rem 0 0"
  }}>
        <thead>
          <tr>
            {headers.map(header => <th key={header} style={{
    ...cell,
    fontWeight: 600,
    opacity: 0.72
  }}>
                {header}
              </th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, row_index) => <tr key={row.id ?? row_index}>
              {(row.items ?? []).map((item, item_index) => <td key={item_index} style={{
    ...cell,
    overflowWrap: "anywhere"
  }}>
                  {item?.label}
                </td>)}
            </tr>)}
        </tbody>
      </table>
    </details>;
};

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>Type</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Default</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Changeable without restart
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

These settings are available in [system.settings](/reference/system-tables/settings) and are autogenerated from [source](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<h2 id="http_allow_database_as_path">
  http\_allow\_database\_as\_path
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "New setting to recognize a database name in the URL path of HTTP requests."}]}]} />

If enabled, the HTTP interface recognizes a `/database/` component in the URL path and uses it as the current database.

This is a per-user setting that controls whether a routed path-style request is interpreted. Routing itself is gated globally by the server-level `http_allow_path_requests` configuration setting (off by default), which must be enabled for the HTTP interface to route a path-style request (such as `/my_db/my_table.csv`) to the query handler at all — that routing decision is made before the request is authenticated, so it cannot depend on a per-user setting. When `http_allow_path_requests` is off, unknown paths return a plain `404`. After routing, this setting is re-checked against the authenticated user's effective settings, so it can be enabled selectively per user, role, or profile.

<h2 id="http_allow_filters_as_path">
  http\_allow\_filters\_as\_path
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "New setting to recognize hive-style `name=value` filters in the URL path of HTTP requests."}]}]} />

If enabled, the HTTP interface recognizes `/name=value/` components in the path (hive partitioning style) and translates them to filters combined with AND. Operators `>`, `<`, `>=`, `<=`, `!=`, `<>` are also recognized.

Like [`http_allow_database_as_path`](/reference/settings/session-settings/http#http_allow_database_as_path), this is a per-user setting; routing of path-style requests is gated globally by the server-level `http_allow_path_requests` configuration setting (routing happens before authentication).

<h2 id="http_allow_filters_as_unrecognized_url_parameters">
  http\_allow\_filters\_as\_unrecognized\_url\_parameters
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "New setting to treat unrecognized URL parameters as filter expressions in HTTP requests."}]}]} />

If enabled, any URL parameter not recognized as a known parameter, setting, or `param_*` prefix is treated as a filter and combined with AND. Two forms are accepted:

* A plain `name=value` becomes the equality `` `name` = 'value' `` (the identifier is back-quoted, the value is quoted as a string literal).
* A comparison operator (`!=`, `>`, `<`, `>=`, `<=`, `<>`) makes it a comparison: either split across the parameter (`?a!=2`, `?a>=2`) or written inline when the URL has no `=` to split on (`?a<>2`, `?f(x)>3`), in which case the reassembled `name[=value]` is parsed as a full SQL expression.

<h2 id="http_allow_table_as_file">
  http\_allow\_table\_as\_file
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "New setting to recognize a table name in the URL path of HTTP requests, with optional format\/compression extensions."}]}]} />

If enabled, the HTTP interface recognizes the last URL path component as a table name in the form `table`, `table.format`, or `table.format.compression`. The path is interpreted as `SELECT * FROM table`.

Like [`http_allow_database_as_path`](/reference/settings/session-settings/http#http_allow_database_as_path), this is a per-user setting; routing of path-style requests is gated globally by the server-level `http_allow_path_requests` configuration setting (routing happens before authentication).

<h2 id="http_connection_timeout">
  http\_connection\_timeout
</h2>

<SettingsInfoBlock type="Seconds" default_value="1" />

HTTP connection timeout (in seconds).

Possible values:

* Any positive integer.
* 0 - Disabled (infinite timeout).

<h2 id="http_make_head_request">
  http\_make\_head\_request
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

The `http_make_head_request` setting allows the execution of a `HEAD` request while reading data from HTTP to retrieve information about the file to be read, such as its size. Since it's enabled by default, it may be desirable to disable this setting in cases where the server does not support `HEAD` requests.

<h2 id="http_native_compression_disable_checksumming_on_decompress">
  http\_native\_compression\_disable\_checksumming\_on\_decompress
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

Enables or disables checksum verification when decompressing the HTTP POST data from the client. Used only for ClickHouse native compression format (not used with `gzip` or `deflate`).

For more information, read the [HTTP interface description](/concepts/features/interfaces/http).

Possible values:

* 0 — Disabled.
* 1 — Enabled.

<h2 id="http_receive_timeout">
  http\_receive\_timeout
</h2>

<SettingsInfoBlock type="Seconds" default_value="30" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.6"},{"label": "30"},{"label": "See http_send_timeout."}]}]} />

HTTP receive timeout (in seconds).

Possible values:

* Any positive integer (seconds). `0` is **not** an infinite timeout and can cause connection setup failures (POSIX socket timeouts require a positive interval).

<h2 id="http_send_timeout">
  http\_send\_timeout
</h2>

<SettingsInfoBlock type="Seconds" default_value="30" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.6"},{"label": "30"},{"label": "3 minutes seems crazy long. Note that this is timeout for a single network write call, not for the whole upload operation."}]}]} />

HTTP send timeout (in seconds).

Possible values:

* Any positive integer (seconds). `0` is **not** an infinite timeout and can cause connection setup failures (POSIX socket timeouts require a positive interval).

<Note>
  It's applicable only to the default profile. A server reboot is required for the changes to take effect.
</Note>

<h2 id="http_skip_not_found_url_for_globs">
  http\_skip\_not\_found\_url\_for\_globs
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

Skip URLs for globs with HTTP\_NOT\_FOUND error

<h2 id="http_wait_end_of_query">
  http\_wait\_end\_of\_query
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

Enable HTTP response buffering on the server-side.

<h2 id="http_write_exception_in_output_format">
  http\_write\_exception\_in\_output\_format
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "0"},{"label": "Changed for consistency across formats"}]}, {"id": "row-2","items": [{"label": "23.9"},{"label": "1"},{"label": "Output valid JSON\/XML on exception in HTTP streaming."}]}]} />

Write exception in output format to produce valid output. Works with JSON and XML formats.

<h2 id="http_zlib_compression_level">
  http\_zlib\_compression\_level
</h2>

<SettingsInfoBlock type="Int64" default_value="3" />

Sets the level of data compression in the response to an HTTP request if [enable\_http\_compression = 1](/reference/settings/session-settings/enable#enable_http_compression).

Possible values: Numbers from 1 to 12. Levels above `9` require the default build with `libdeflate`; a build without `libdeflate` supports levels 1 to 9.
