【问题标题】:Flash player won't send Referer Header when GET fileFlash播放器在GET文件时不会发送Referer Header
【发布时间】:2014-01-15 06:30:14
【问题描述】:

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

在chrome中一切正常,但crossdomain.xml文件的请求不会在IE中发送Referer Header,因此无法获取文件。

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

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

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

【问题讨论】:

  • 那你能做什么?你有 SWF 资源吗?
  • @Tomek 抱歉,我没有源代码。我想知道为什么 IE 不发送标头。有什么选项可以让IE发送吗?

标签: flash internet-explorer http-referer


【解决方案1】:

根据 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

【讨论】:

  • 应该只是从 https:// 到 http:// (什么是有意义的)但是当 flash 发挥作用时,无论使用什么协议,它似乎都不会发送 Referer请求 crossdomain.xml 时
【解决方案2】:

出于安全原因,Flash 在请求 crossdomain.xml 时不会发送referer 标头。

没有解决办法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多