2011-06-09 27 views
2

我在與阿賈克斯問題(和/或jQuery的AJAX)的地位和狀態302Ajax和302

這就是我想:

var xhr = new XMLHttpRequest(); 
xhr.open("GET", 'some_page_that_I_cant_change.php'); 
xhr.onreadystatechange = function(){ 
    console.log(xhr.readyState, xhr.status); 
}; 
xhr.send(null); 

some_page_that_I_cant_change.php重定向到一個.bin302代碼。我不想下載這個文件,我只想知道文件的路徑。例如:

./some_page_that_I_cant_change.php 
./path/to/bin/file.bin << I wan't only this path as string 

問題是Chrome會自動重定向到文件,而不會告訴我腳本的路徑。有沒有解決方法?

回答

2

如果您使用HEAD請求而不是GET請求,我懷疑這會做你想做的。您只能在響應中看到標題,沒有響應正文(即沒有.bin會下載)。

+0

謝謝。但它不適用於Chrome。它繼續下載文件。但是,我試圖改變爲「'async:false'」,並且有一個驚喜:文件沒有被下載,而是拋出一個異常「」NETWORK_ERR:XMLHttpRequest Exception 101「」。我不能在jsFiddle上重現,但我想要的標題,我不能得到,只有簡單的標題([code here](http://jsfiddle.net/RL22m/)) – 2011-06-09 21:12:31

+0

這很愚蠢。 Chrome不應該通過HEAD調用來下載資源:-(我沒有誠實地說出任何其他想法,對不起。 – 2011-06-09 21:27:03

+0

沒問題。無論如何,謝謝,因爲我可以幫助有類似問題的人。 – 2011-06-10 00:32:21

0

一句話:我不認爲你可以做HTTP協議的因由。
HTTP協議([1]:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)規定302意味着重定向URI,並且瀏覽器如下所示。因此,javascript無法獲得重定向響應,只能得到最終響應。

所以,你必須通過響應身體獲得路徑。