# HTTP

HTTP 协议。

::: warning
**http 协议没有对传输加密，不适宜经公网中传输，更容易成为被人用作攻击的肉鸡。**
:::

`http` 入站更有意义的用法是在局域网或本机环境下监听，为其他程序提供本地服务。

::: tip TIP 1
`http proxy` 只能代理 tcp 协议，udp 系的协议均不能通过。
:::

::: tip TIP 2
在 Linux 中使用以下环境变量即可在当前 session 使用全局 HTTP 代理（很多软件都支持这一设置，也有不支持的）。

- `export http_proxy=http://127.0.0.1:8080/` (地址须改成你配置的 HTTP 入站代理地址)
- `export https_proxy=$http_proxy`
  :::

## InboundConfigurationObject

```json
{
  "timeout": 0,
  "accounts": [
    {
      "user": "my-username",
      "pass": "my-password"
    }
  ],
  "allowTransparent": false,
  "userLevel": 0
}
```

> `timeout`: number

连接空闲的时间限制。单位为秒。默认值为 `300`, 0 表示不限时。

处理一个连接时，如果在 `timeout` 时间内，没有任何数据被传输，则中断该连接。

> `accounts`: \[[AccountObject](#accountobject)\]

一个数组，数组中每个元素为一个用户帐号。默认值为空。

当 `accounts` 非空时，HTTP 代理将对入站连接进行 Basic Authentication 验证。

> `allowTransparent`: true | false

当为 `true` 时，会转发所有 HTTP 请求，而非只是代理请求。

::: tip
若配置不当，开启此选项会导致死循环。
:::

> `userLevel`: number

用户等级，连接会使用这个用户等级对应的 [本地策略](../policy.md#levelpolicyobject)。

userLevel 的值, 对应 [policy](../policy.md#policyobject) 中 `level` 的值。 如不指定, 默认为 0。

### AccountObject

```json
{
  "user": "my-username",
  "pass": "my-password"
}
```

> `user`: string

用户名，字符串类型。必填。

> `pass`: string

密码，字符串类型。必填。
