# 容器内变量信息

## 请求 header

在容器内收到的从小程序端或已登录的 web 端发起的请求 header 中，有以下包含微信信息的 header，其中包括 OpenID 等用户信息：

| header | 说明 |
| ---- | ---- |
| X-WX-OPENID  | 小程序用户 OpenID，资源复用情况下不存在，参考 `X-WX-FROM-OPENID` |
| X-WX-APPID  | 小程序 AppID |
| X-WX-UNIONID  | 小程序用户 UnionID，并且[满足 UnionID 获取条件](/miniprogram/dev/framework/open-ability/union-id.md)时有 |
| X-WX-FROM-OPENID  | 资源复用情况下，小程序用户 OpenID |
| X-WX-FROM-APPID  | 资源复用情况下，使用方小程序 AppID |
| X-WX-FROM-UNIONID  | 资源复用情况下，小程序用户 UnionID，并且[满足 UnionID 获取条件](/miniprogram/dev/framework/open-ability/union-id.md)时有 |
| X-WX-ENV  | 所在云环境 ID |
| X-WX-SOURCE  | 调用来源（本次运行是被什么触发） |
| X-Original-Forwarded-For  | 客户端 IPv4 或 IPv6 地址 |

> 注意 1：header 是大小写不敏感的，有些框架可能会将原始 header 转为小写，甚至有些框架会强转为无划线驼峰或下划线形式，请在业务开发之前先打印测试 header 信息！

> 注意 2：请求处理时如需保证调用来源是微信生态端（微信小程序、公众号 H5），请判断 X-WX-SOURCE 头部是否存在

> 注意 3： 无法直接获取用户微信昵称及手机号等信息，需要用 **OpenID** 再次调用对应接口换取。

### PHP 获取 Header 示例

以下例子适用于 apache 环境

``` php
<?php
  $head = getallheaders() // 获取请求头
  echo json_encode($head);
?>
```

以下例子适用于 nignx 等非 apache 环境

``` php
<?php
  $_SERVER['X-WX-OPENID'] // 获取用户的OPENID
?>
```

### Node.js 获取 Header 示例

``` js
const express = require('express')
const app = express()

app.get('/', (req, res) => {
  const header = req.headers // req.headers 获取请求头
  res.json(header)
})

const port = process.env.PORT || 80
app.listen(port, () => {
  console.log('服务启动，端口：', port)
})
```

## 环境变量

| 变量名称 | 说明 |
| - | - |
| CBR_ENV_ID | 当前环境 ID |
| MYSQL_USERNAME | 模板部署自动开通数据库时，数据库用户名 |
| MYSQL_PASSWORD | 模板部署自动开通数据库时，数据库密码 |
| MYSQL_ADDRESS | 模板部署自动开通数据库时，数据库内网地址 |

> 如果不使用微信云托管中的 MySQL 使用其他数据库，或者微信云托管中 MySQL 是单独手动开通而非通过模板部署自动开通的，则不会产生数据库相关的三个环境变量。

### PHP 获取环境变量示例

``` php
<?php
  $ENVID = getenv("CBR_ENV_ID");
  echo $ENVID;
?>
```

### GO 获取环境变量示例

```go
import os
os.Getenv("CBR_ENV_ID")
```

### Python 获取环境变量示例

``` python
import os
os.getenv('CBR_ENV_ID')
```

### Java 获取环境变量示例

``` java
// 所有环境变量
System.getProperties()
// 指定某个环境变量
System.getProperty('CBR_ENV_ID') 
```

### Node.js 获取环境变量示例

``` js
const express = require('express')
const app = express()

app.get('/', (req, res) => {
  const CBR_ENV_ID = process.env.CBR_ENV_ID // process.env 获取环境变量
  console.log('当前环境ID为：', CBR_ENV_ID)
  res.send(CBR_ENV_ID)
})

const port = process.env.PORT || 80
app.listen(port, () => {
  console.log('服务启动，端口：', port)
})
```

## 时区设置

请移步至[时区设置文档](/minigame/dev/wxcloudrun/src/development/timezone/index)
