我有这个swf文件,它会在播放前请求crossdomain.xml
文件。并且文件主机配置为禁止“Hotlinking”(这意味着服务器将检查Referer Header,如果referer不在列表中,则返回302
)。
在Chrome中一切运行良好,但crossdomain.xml
文件的请求不会在IE中发送Referer
标题,因此无法获取文件。
我已经在IE 11的调试工具中测试了IE 11,IE 8和IE 9,10。
我不是这个swf文件的作者,也不知道它是如何工作的。有什么解决方案吗?谢谢!
更新: 我没有回答,所以我必须重新配置服务器以禁用302重写。
答案 0 :(得分:0)
根据IE文档:
在Internet Explorer 4.0及更高版本中从一个文档链接到另一个文档时,当链接从HTTPS页面到非HTTPS页面时,将不会发送Referer标头。当链接来自非HTTP(S)协议(例如file://)到另一个页面时,也不会发送Referer标头。
您可以阅读更多信息here
你可以尝试模仿这样的东西来覆盖这种行为:
//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();
}
}
更多信息here
答案 1 :(得分:0)
出于安全原因,Flash在请求crossdomain.xml时不会发送referer标头。
没有解决方法。