Как разобрать первую строку заголовка http? - PullRequest
4 голосов
/ 26 марта 2012

Существует ли какая-либо функция javascript для анализа первой строки заголовка http?

GET /page/?id=173&sessid=mk9sa774 HTTP/1.1

URL-адрес закодирован.

Я хотел бы получить объект, например так:

{
"method" : "GET",
"url" : "/page/",
"parameters": {
  "id" : 173,
  "sessid" : "mk9sa774"
  }
}

Я много искал, но ничего полезного не нашел.

заранее спасибо,

1 Ответ

7 голосов
/ 26 марта 2012

Сначала вы можете разделить на пробелы:

var lineParts = line.split(' ');

Теперь вы можете получить метод, непарсированный путь и версию:

var method  = lineParts[0];
var path    = lineParts[1];
var version = lineParts[2];

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

var queryStringIndex = path.indexOf('?');
var url, queryString;
if(queryStringIndex == -1) {
    url = path, queryString = '';
}else{
    url = path.substring(0, queryStringIndex);
    // I believe that technically the query string includes the '?',
    // but that's not important for us.
    queryString = path.substring(queryStringIndex + 1);
}

Если есть строка запроса, мы можем затем разбить ее на key=value строки:

var queryStringParts = [];
if(queryStringIndex != -1) {
    queryStringParts = queryString.split('&');
}

Затем мы можем удалитьи вставьте их в объект:

var parameters = {};
queryStringParts.forEach(function(part) {
    var equalsIndex = part.indexOf('=');
    var key, value;
    if(equalsIndex == -1) {
        key = part, value = "";
    }else{
        key   = part.substring(0, equalsIndex);
        value = part.substring(equalsIndex + 1);
    }
    key   = decodeURIComponent(key);
    value = decodeURIComponent(value);
    parameters[key] = value;
});

Если вы действительно хотите, вы можете поместить все эти данные в объект:

return {
    method:     method,
    url:        url,
    version:    version,
    parameters: parameters
};

Если вы в браузересреда, это единственный способ сделать это.Если вы используете Node.JS, может обработать для вас разбор URL .

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