Javascript window.location.href-解释为文档但使用MIME类型传输的资源

Javascript window.location.href-解释为文档但使用MIME类型传输的资源,javascript,google-chrome,http-headers,Javascript,Google Chrome,Http Headers,我有一个我的访问者可以访问的url,可以触发即时文件下载: http://localhost:3000/download window.location.href="/download"; 以下是此路由的Node.js Express代码: router.get('/download', function(req, res, next){ res.setHeader('Content-disposition', 'attachment; filename=downloadfile.z

我有一个我的访问者可以访问的url,可以触发即时文件下载:

http://localhost:3000/download
window.location.href="/download";
以下是此路由的Node.js Express代码:

router.get('/download', function(req, res, next){
    res.setHeader('Content-disposition', 'attachment; filename=downloadfile.zip');
    res.setHeader('Content-type', 'application/zip');
    var filestream = fs.createReadStream('downloadfile.zip');
    filestream.pipe(res);
});
因此,我正在正确设置标题,并提供文件供下载。在Chrome中,如果我使用JavaScript触发此下载:

http://localhost:3000/download
window.location.href="/download";
然后Chrome的控制台发出警告:

Resource interpreted as Document but transferred with MIME type application/zip: "http://localhost:3000/download".
但是,该文件已正确下载。只是那个警告出现了。关于此警告有几十个主题,所有内容都指向确保正确设置标题。我很肯定我的是对的

以下是响应标题:

HTTP/1.1 200 OK
X-Powered-By: Express
Content-disposition: attachment; filename=downloadfile.zip
Content-type: application/zip
Date: Wed, 23 Dec 2015 19:14:47 GMT
Connection: keep-alive
Transfer-Encoding: chunked
以下是请求头:

GET /download HTTP/1.1
Host: localhost:3000
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.20 Mobile Safari/537.36
Referer: http://localhost:3000/filerequest
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,es;q=0.6
Cookie: dwanonymous_259c8c42aa11d4ff581f55a1b8d75159=ablFleC64VDwlUxLnzJvjesSKP; s_fid=3E452B78AEFE8958-0900CA102BA80FF0; com.somthing.iMAWwwee=36335a074-9eds-cbbc-91a4-4b8d238ddw6d6
我在Firefox中没有看到这个错误。在Chrome中,无论设置中是否选中“下载前询问保存每个文件的位置”,我都会看到这个错误


这只是我希望访问者忽略的警告,还是我可以在响应标题中添加一些内容来防止出现这种情况?

您是否尝试添加
内容长度
标题

router.get('/download', function(req, res, next){

    var stat = fs.statSync('downloadfile.zip');
    res.writeHead(200, {
       'Content-disposition' : 'attachment; filename=downloadfile.zip'
       'Content-Type' : 'application/zip',
       'Content-Length' : stat.size
    });

    var filestream = fs.createReadStream('downloadfile.zip');
    filestream.pipe(res);
});

谢谢你的建议。我添加了这个,但结果相同。它是
链接吗?您可以尝试添加
download
属性。或者将目标
\u设为空白
。基本上,您正在浏览器中打开文件。你也可以试着从chrome上禁用所有插件(谷歌文档等等),看看这是否有效。虽然没有链接,但可以。只是当我把它输入地址栏,或者它是一个链接,或者我使用JS访问它的时候。你试过禁用chrome中的所有插件吗?我记得几个月前也有这个问题。但只在一台电脑上。我在那台电脑上重新安装了chrome,信息是goneHi Jake,你知道这一个吗?就不管了?