Flash 播放器在 GET 文件时不会发送引用标头



我有这个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时不会发送引用标头。

没有解决方法。

最新更新