【发布时间】:2014-02-19 19:53:11
【问题描述】:
我试图通过 XHR 访问 REST 服务器上的资源,因为我想下载它。
<script type="text/javascript">
function iframe_onload (){
var xmlhttp=new XMLHttpRequest();
var url = "http://example.com/document/12345"
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader("accept","application/pdf");
xmlhttp.onload = function() {
var oIFrm = document.getElementById('myIFrm');
oIFrm.src = url;
};
xmlhttp.send(null);
}
<iframe id="myIFrm" style="visibility:hidden" src="">
</iframe>
它可以在 Chrome、Safari、IE 上运行,但不能在 FF 上运行,我检查了 FF 中的缓存,来自 XHR 的第一个请求以“anon&uri”开头,所以缓存键类似于“anon&uri=http://example.com/document/12345” ,并且当前页面和url不在同一个域中,我已经为服务器设置了CORS,然后第二个请求无法从缓存中获取PDF文件,如果我将2个服务器放在同一个域下,缓存键是正常的一个没有“anon&uri”的,那么代码就可以工作了。
当我在 FF 上为两个服务器设置 CORS 时,任何人都知道为什么缓存键以“anon&uri=”开头,以及如何避免这个问题并使代码正常工作。
谢谢,
乔伊
【问题讨论】:
标签: javascript rest firefox caching xmlhttprequest