Skip to content

Variables de entorno

Busindre edited this page Nov 3, 2016 · 1 revision

Los servidores WebSocket frecuentemente necesitan recibir información adicional sobre la conexión más allá del simple flujo de mensajes - como por ejemplo el host remoto, página web en la que se encuentra, parámetros de consulta de la URL, cookies, etc.

Para ello se pueden establecer variables de entorno para cada solicitud.

Las variables se ajustan a la Common Gateway Interface (CGI) 1.1 Specification.

Se pueden leer estas variables de entorno directamente o bien utilizar una biblioteca CGI específica de lenguaje de programación usado (e.g. Perl, Python, Ruby).


AUTH_TYPE

Sin valor. No se admite en WebSockets.

RFC 3875 - section 4.1.1

CONTENT_LENGTH

Sin valor. No se admite en WebSockets.

RFC 3875 - section 4.1.2

CONTENT_TYPE

Sin valor. No se admite en WebSockets.

RFC 3875 - section 4.1.3

GATEWAY_INTERFACE

La cadena websocketd-CGI/0.1.

Futuras versiones podrían cambiar el número de versión.

Ejemplo:

GATEWAY_INTERFACE=websocketd-CGI/0.1

RFC 3875 - section 4.1.4

HTTP_COOKIE

HTTP Cookies, si está presente.

Ejemplo:

HTTP_COOKIE=session=1234; prefs=foo`

RFC 6265 - section 4.2

HTTP_ORIGIN

La URL base del sitio "origen" que inicia el servicio WebSocket.

Ejemplo:

HTTP_ORIGIN=https://github.com/

RFC 6454 - section 4.2

PATH_TRANSLATED

Pendiente.

RFC 3875 - section 4.1.6

PATH_INFO

Pendiente.

RFC 3875 - section 4.1.5

QUERY_STRING

Todo lo que está después de ? en la URL.

Ejemplo: Si se solicita ws://localhost:1234/somedir/myscript.py?name=me&msg=hello%20world, entonces:

QUERY_STRING=name=me&msg=hello%20world

RFC 3875 - section 4.1.7

REMOTE_ADDR

Dirección IP del cliente WebSocket remoto.

Ejemplo:

REMOTE_ADDR=123.123.123.123

RFC 3875 - section 4.1.8

REMOTE_HOST

Resolución DNS inversa del cliente WebSocket remoto.

Ejemplo:

REMOTE_HOST=somemachine.someisp.com

Si la resolución inversa fallara, o si --reverselookup=false es especificada en el comando websocketd, el valor será el mismo que REMOTE_ADDR.

RFC 3875 - section 4.1.9

REMOTE_IDENT

Sin valor. No se admite en WebSockets.

RFC 3875 - section 4.1.10

REMOTE_PORT

Puerto origen del cliente WebSocket.

Ejemplo:

REMOTE_PORT=52696

(No es estándar).

REMOTE_USER

Sin valor. No se admite en WebSockets.

RFC 3875 - section 4.1.11

REQUEST_METHOD

Método de la petición HTTP. Para WebSockets siempre es GET.

Ejemplo:

REQUEST_METHOD=GET

RFC 3875 - section 4.1.12

REQUEST_URI

La URL original tal y como fue enviada por el cliente de WebSocket. Esta no incluye esquema, host o puerto.

Ejemplo: Si la URL de la solicitud es ws://localhost:1234/somedir/myscript.py?name=me&msg=hello%20world, entonces:

REQUEST_URI=/somedir/myscript.py?name=me&msg=hello%20world

(No es estándar).

SCRIPT_NAME

Pendiente.

RFC 3875 - section 4.1.13

SERVER_NAME

Nombre del servidor especificado en la URL.

Ejemplo:

SERVER_NAME=www.example.com

RFC 3875 - section 4.1.14

SERVER_PORT

Puerto donde escuchar el servidor.

Ejemplo:

SERVER_PORT=8080

RFC 3875 - section 4.1.15

SERVER_PROTOCOL

Protocolo HTTP en uso especificado por el cliente.

Ejemplo:

SERVER_PROTOCOL=HTTP/1.1

RFC 3875 - section 4.1.16

SERVER_SOFTWARE

la cadena websocketd/x.x.x.x, donde x.x.x.x es la versión del programa websocketd.

Ejemplo:

SERVER_SOFTWARE=websocketd/1.0.0.0

RFC 3875 - section 4.1.17

UNIQUE_ID

Una única cadena asociada a la conexión WebSocket, útil para "loggin" o depuración.

El ID debe ser tratado de manera opaca, como una cadena, no como un número. La implementación puede cambiar en el futuro.

El ID sólo se garantiza que sea único dentro de un único proceso websocketd.

Ejemplo:

UNIQUE_ID=45462465645449101442

(Non standard)


HTTP Headers

Según la especificación CGI, todos los encabezados HTTP se establecerán como variables de entorno. El nombre del encabezado sufrirá las siguientes transformaciones.

  • Las cadena serán convertidas a mayúsculas.
  • Los guiones - serán transformados a guiones bajos _.
  • Prefijos con HTTP_.

Ejemplo: Si el encabezado HTTP Sec-WebSocket-Version: 13 está presente, entonces:

HTTP_SEC_WEBSOCKET_VERSION=13

RFC 3875 - section 4.1.18

Clone this wiki locally