2016-11-28 53 views
1

爲了防止直接的URL訪問下載我的網站上的文件我用以下這是由下面的JavaScript上的下載鏈接的點擊過程中設置好的HTTP標頭:的JavaScript的HTTP請求頭值和FireFox問題

$('a.download').on('click', function(){ 
    $.ajax({ 
     url: '/ajax/preventDownload', 
     headers: { 'x-rarity-download-header': 'download' } 
    }); 
}) 

服務器檢查這個'x-rarity-download-header'是否出現在HTTP請求中,如果不允許用戶下載文件。

現在這種方法不適用於所有瀏覽器,例如它在FireFox 50中工作,而且看起來像在48以前的版本上不起作用。而且,這種方法在Safari瀏覽器中不起作用。

這可能是什麼原因以及如何解決?

+0

你得到它與'beforeSend工作'或者使用不同的方法? – DanFromGermany

回答

1

首先,你應該尊重拼寫。它應該是X-Rarity-Download-Header

有些軟件的確比其他軟件更嚴肅,只允許標準化的標題或自定義標題以大寫字母X-設置。

除此之外,我建議你切換到更常見的方法,如oauth2令牌

或者一些比較容易的方式,如:

1. Visit the site 
2. Set a cookie 
3. Allow download. 
4. If cookie is not set, don't allow to download. 

您也可以嘗試從jQuery的,這似乎是一個更好一點的地方添加頁眉beforeSend方法:http://api.jquery.com/jquery.ajax/