我有这个swf文件,它会在播放前请求一个crossdomain.xml
文件。并且文件主机配置为禁止"热链接"(这意味着服务器将检查引用标头,如果引用不在列表中,则返回302
)。
在 chrome 中一切正常,但对crossdomain.xml
文件的请求不会在 IE 中发送Referer
标头,因此无法获取文件。
我已经在IE 11的调试工具中测试了IE 11,IE 8和IE 9,10。
我不是这个 swf 文件的作者,也不知道它是如何工作的。有什么解决办法吗?谢谢!
更新:我没有得到答案,所以我必须重新配置服务器以禁用 302 重写。
根据IE文档:
在 Internet Explorer 4.0 及更高版本中从一个文档链接到另一个文档时,当链接从 HTTPS 页面链接到非 HTTPS 页面时,将不会发送 Referer 标头。当链接从非 HTTP(S) 协议(如 file://)到另一个页面时,也不会发送 Referer 标头。
您可以在此处阅读更多信息
您可以尝试模仿类似的东西来覆盖该行为:
//use browser sniffing to determine if IE or Opera (ugly, but required)
var isOpera, isIE = false;
if(typeof(window.opera) != 'undefined'){isOpera = true;}
if(!isOpera && navigator.userAgent.indexOf('Internet Explorer')){isIE = true;}
//define for all browsers
function goto(url){
location.href = url;
}
//re-define for IE
if(isIE){
function goto(url){
var referLink = document.createElement('a');
referLink.href = url;
document.body.appendChild(referLink);
referLink.click();
}
}
更多信息在这里
出于安全原因,Flash 在请求跨域.xml时不会发送引用标头。
没有解决方法。