2013-12-19 94 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才能使用。所以在節點我想是這樣的:

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側。 我添加兩者

訪問控制 - 暴露 - 接頭接入控制允許集管

在node.js中的響應首部這解決了我的問題。此前我只有Access-Control-Allow-Headers

+0

@blunderboy,SO需要2天的時間來接受OP自己的回答:) –

2

你想要什麼標題?將其添加到Access-Control-Allow-Headers。 (我不知道CORS頭是否出現或沒有,但你可能不會需要他們。)

'Access-Control-Allow-Headers': 'Header1, Header2, Header3'