GET文件时,Flash播放器不会发送Referer Header

时间:2013-12-27 16:53:51

标签: flash internet-explorer http-referer

我有这个swf文件,它会在播放前请求crossdomain.xml文件。并且文件主机配置为禁止“Hotlinking”(这意味着服务器将检查Referer Header,如果referer不在列表中,则返回302)。

在Chrome中一切运行良好,但crossdomain.xml文件的请求不会在IE中发送Referer标题,因此无法获取文件。

我已经在IE 11的调试工具中测试了IE 11,IE 8和IE 9,10。

我不是这个swf文件的作者,也不知道它是如何工作的。有什么解决方案吗?谢谢!

更新: 我没有回答,所以我必须重新配置服务器以禁用302重写。

2 个答案:

答案 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标头。

没有解决方法。