Чтение входящих HTTP-заголовков с помощью node.js

Теперь, как пример, я получаю ответ, который частично содержит ключ/значения как объект javascript:

status: '200 OK',
'content-encoding': 'gzip'

Я могу легко считывать и регистрировать сообщение о состоянии с помощью: headers.status, но когда я пытаюсь зарегистрировать кодировку содержимого (которая мне нужна в этой конкретной ситуации), это ошибки:

headers.'content-encoding' <- obviously the quotes it doesn't like
headers.content-encoding <- obviously the '-' it doesn't like

Как я могу предположить, чтобы получить/прочитать/записать его значение кодировки контента?

здоровается,

m0rph3v5

Ответ 1

Javascript также поддерживает обозначение квадратной скобки для ссылки на свойства, поэтому, если headers является подходящим объектом, вы можете использовать headers['content-encoding'].

Ответ 2

Свойства JavaScript имеют имена, которые вам известны. Когда имя является юридическим идентификатором, и вы знаете буквальное имя, которое вы хотите, когда пишете код, вы можете использовать его с пунктирной нотацией.

var foo = headers.foo;

Если имя не является юридическим идентификатором или если вы хотите определить имя, которое вы ищете во время выполнения, вы можете использовать строку:

var encoding = headers['content-encoding'];

или

var name = 'content-encoding';
var encoding = headers[name];

или даже

var x = 'encoding';
var encoding = headers['content-' + x];

Как вы можете видеть, это не обязательная строка. Это очень удобно для функций общего назначения, которые должны принимать имя свойства как аргумент функции или аналогичный.

Обратите внимание, что имена свойств чувствительны к регистру.

Ответ 3

Я думаю, вы должны установить очень хорошую express. Я действительно упрощаю node.js webdevelopment.

Вы можете установить его с помощью npm

npm install express

Этот фрагмент показывает, как устанавливать заголовки и читать заголовки

var express = require('express');

var app = express.createServer();

app.get('/', function(req, res){
    console.log(req.header('a'));
    res.header('time', 12345);

    res.send('Hello World');
});

app.listen(3000);

Curl из командной строки

$curl http://localhost:3000/ -H "a:3434" -v
* About to connect() to localhost port 3000 (#0)
*   Trying ::1... Connection refused
*   Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 3000 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.21.2 (i686-pc-linux-gnu) libcurl/7.21.2 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
> Host: localhost:3000
> Accept: */*
> a:3434
> 
< HTTP/1.1 200 OK
< X-Powered-By: Express
< time: 12345
< Content-Type: text/html; charset=utf-8
< Content-Length: 11
< Date: Tue, 28 Dec 2010 13:58:41 GMT
< X-Response-Time: 1ms
< Connection: keep-alive
< 
* Connection #0 to host localhost left intact
* Closing connection #0
Hello World

Журнал выводит сообщение заголовка через curl на сервер node:

$ node mo.js 
3434