2016-11-28 48 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/