2013-12-19 4 views
2

Мы Node.js в качестве сервера, который помогает в получении нами услуги удаленного отдыха, от клиента HTML Я пытаюсь получить заголовки ответа от вызова JQuery Ajax с использованием кода ниже:xhr.getAllResponseHeaders() возвращает только один заголовок

$.ajax({ 
    type: "get", 
    url: newUrl, 
    crossDomain: true, 
    cache: false, 
    dataType: "json", 
    contentType: "application/json; charset=UTF-8", 
    success: function(data, textStatus, xhr) { 
    var responseText = JSON.stringify(data); 
    alert(xhr.getAllResponseHeaders()); 
    }, 
    error: function (xhr, textStatus, errorThrown) { 
    console.log(errorThrown); 
    } 
}); 

Но проблема в том, что я получаю только один ответный заголовок: Content-Type: application/json Остальные вещи игнорируются. Из моих исследований я обнаружил, что мне нужно добавить Access-Control-Allow-Headers, чтобы сделать это доступным. Таким образом, в Node Я пытался так:

res.writeHead(200, { 
    'Content-Type': 'application/json', 
    'Access-Control-Allow-Origin': '*', 
    'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE', 
    'Access-Control-Allow-Headers': 'Content-Type, Access-Control-Allow-Origin' 
}); 

Но до сих пор я получаю только один заголовок Content-Type. Можете ли вы помочь в выявлении этой проблемы? Кстати, это перекрестные вызовы.

ответ

4

Наконец я могу решить эту проблему, с Node.js стороны. я добавил оба

Access-Control-Expose-Headers и Access-Control-Allow-Headers

в заголовке ответа в Node.js. Это решило мою проблему. Раньше у меня было только Access-Control-Allow-Headers.

+0

@blunderboy, SO требуется 2 дня, чтобы принять собственный ответ OP :) –

2

Какой заголовок вы хотите? Добавьте его в Access-Control-Allow-Headers. (Я не уверен, является ли заголовок CORS отображаться или нет, хотя вы, вероятно, не будете нуждаться в них.)

'Access-Control-Allow-Headers': 'Header1, Header2, Header3' 
Смежные вопросы