内容处置附件是否阻止XMLHttpRequest?

我想从我写的C#web服务器执行一个png文件的JavaScript xhr请求。 这是我使用的代码

var imgUrl = "http://localhost:8085/AnImage.png?" + now; var request = new XMLHttpRequest(); request.open('GET', imgUrl, false); request.send(); // this is in a try/catch 

在服务器端,我发回文件并添加一个Content-Disposition头。 我得到以下回应

在响应中获得的标题,与萤火虫

在Content-Type(截图来自Firebug,按字母顺序附加)之后,我确定Content-Disposition已经附加在标题中。

结果是没有对话框被触发,我在回应中遗漏了什么?

编辑:我想在JavaScript中执行的一切有几个原因。 首先:我不想展示形象,我想把所有的东西放在幕后。 第二:在请求图像时,我希望仅将Content-Disposition添加到特定的请求上。 这些请求标有“警告”标题,其值为“附件请求”

 request.setRequestHeader("Warning","AttachmentRequest"); 

       

网上收集的解决方案 "内容处置附件是否阻止XMLHttpRequest?"

当请求通过XHR时,我认为Content-Disposition不会触发任何文件保存对话框。 XHR的使用表明你将要在代码中处理结果。

如果您希望提示用户将图像保存到文件,我已经成功地使用了该技术:

 window.open("http://img.nodejscore.com/javascript/AnImage.png?" + now); 

它的不足之处在于,它会短暂地闪烁一个空白的打开窗口,直到标题到达,然后新窗口closures,并出现“保存文件”对话框。

使用iframe可能会阻止窗口闪烁:

 var f = document.createElement('iframe'); f.style.position = "absolute"; f.style.left = "-10000px"; f.src = "http://img.nodejscore.com/javascript/AnImage.png?" + now; document.body.appendChild(f); 

另外,我想知道Content-Dispositionimg元素的处理有什么影响(如果有的话):

 var img = document.createElement('img'); img.style.position = "absolute"; img.style.left = "-10000px"; img.src = "http://img.nodejscore.com/javascript/AnImage.png?" + now; document.body.appendChild(img); 

我还没有尝试过,但浏览器可能会尊重标题。 您需要确保在您想要支持的所有浏览器上进行testing。