Чтение входящих HTTP-заголовков с помощью node.js - PullRequest
10 голосов
/ 28 декабря 2010

Теперь в качестве примера я получаю ответ, который частично содержит ключ / значения в виде объекта 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

Ответы [ 3 ]

20 голосов
/ 28 декабря 2010

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

4 голосов
/ 28 декабря 2010

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

Вы можете установить его, используя 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 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 mo.js 
3434
4 голосов
/ 28 декабря 2010

Свойства 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];

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...