Flash player赢得';获取文件时不发送Referer头
我有这个swf文件,它将在播放之前请求一个Flash player赢得';获取文件时不发送Referer头,flash,internet-explorer,http-referer,Flash,Internet Explorer,Http Referer,我有这个swf文件,它将在播放之前请求一个crossdomain.xml文件。并且文件主机被配置为禁止“热链接”(这意味着服务器将检查Referer头,如果Referer不在列表中,则返回302) chrome中的一切都很好,但是对crossdomain.xml文件的请求不会在IE中发送Referer头,因此无法获取该文件 我已经在IE11的调试工具中测试了IE11、IE8和IE9、10 我不是这个swf文件的作者,也不知道它是如何工作的。有什么解决办法吗?谢谢 更新: 我没有得到答案,因此我必
crossdomain.xml
文件。并且文件主机被配置为禁止“热链接”(这意味着服务器将检查Referer头,如果Referer不在列表中,则返回302
)
chrome中的一切都很好,但是对crossdomain.xml
文件的请求不会在IE中发送Referer
头,因此无法获取该文件
我已经在IE11的调试工具中测试了IE11、IE8和IE9、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在请求crossdomain.xml时不会发送referer头
没有解决办法。那么你能做什么?你有SWF源代码吗?@Tomek对不起,我没有源代码。我想知道为什么我不发送标题。是否有任何选项可以让IE发送它?应该只从https://发送到http://(什么样的方式才有意义)。但是,当flash发挥作用时,无论在重新测试crossdomain.xml时使用什么协议,它似乎都不会发送Referer