2014-02-12 72 views
0

是否可以在沒有下載文件數據的情況下從XMLHttpRequest獲取響應頭文件?如何只從XMLHttpRequest獲取響應頭文件

+0

向下投用於接受一個服務器側回答爲客戶端的問題。 – John

+1

這個答案幫助我解決了4年前的問題,似乎仍然沒有客戶端解決方案。如果你有,請分享它,我會接受你的答案。 – Anton

回答

1

如果您發出請求的服務器支持該方法,則聽起來像您想要的是發出HTTP HEAD請求。請參閱HTTP spec

例如比較curl -v -X GET https://github.comcurl -v -X HEAD https://github.com的輸出。

另見HTTP HEAD Request in Javascript/Ajax?

+0

謝謝!這正是我需要的。 – Anton

+0

以服務器端答案回答客戶端問題。 – John

+0

我同意它在這裏也能幫助我們展示如何從XHR響應對象獲取頭文件,但對於OP問題,我相信答案是根本正確的。這裏需要的HTTP操作是一個HEAD請求。不過,我可能誤解了這個問題。 –

-1

使用JavaScript(如在問題中指定)簡單地使用通過AJAX一個head請求:

var xhr = new XMLHttpRequest(); 
var method = 'head'; 
var url = 'https://www.example.com/'; 
xhr.open(method,url,true); 
xhr.send(null); 

xhr.onreadystatechange = function() 
{ 
if (xhr.readyState === 4) 
{ 
    console.log(xhr.getAllResponseHeaders()) 
} 
} 
+0

當然這會導致瀏覽器也從服務器獲取整個HTTP響應。這不回答OP的問題。它只是向他們展示瞭如何從JS中的響應對象獲取標題數據。原始問題要求獲取響應標題而不提取內容 –

+0

@StephenIerodiaconou **顯然**你在代碼中沒有*實際*看*,並注意到'method' **參數**,它是故意作爲參數一個原因。沒關係,這不像在編程或任何事情時注意一些重要的事情。 – John

+0

抱歉不能確定你的意思,你說的正確答案是根據你的答案使用HTTP POST嗎?或者,如果讀者應該明白,如果他們想向服務器表明他們不需要完整的響應主體,那麼上面的代碼中的HTTP'method'應該改爲'head'?在你的例子中,POSTing仍然會返回一個正文(假設服務器爲給定的端點創建一個正文)。然而,HEAD請求的語義向服務器表明服務器不響應正文(假設端點支持HEAD)。如果解釋,很樂意刪除downvote。 –