代码之家  ›  专栏  ›  技术社区  ›  coderex

我如何知道请求是否来自闪存SWF?

  •  6
  • coderex  · 技术社区  · 14 年前

    我有一个在Flash中开发的应用程序,我需要访问一些PHP文件。因此,如果访问来自SWF,PHP文件将返回一些数据。如何识别请求是否来自闪存?

    不向PHP传递get/post变量。

    4 回复  |  直到 14 年前
        1
  •  1
  •   Robus    14 年前

    可能是用户代理/引用。记住,请求很容易被伪造

        2
  •  1
  •   nerdabilly    14 年前

    我认为没有一种可靠的方法来检测flash是否发出了请求。Flash不允许您设置用户代理,并且对可以设置的头文件有很多限制。

    看一看 http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/net/URLRequestHeader.html

    正如JohnBallinger建议的,您可以使用这个设置自己的头,并在PHP页面中查找该头。

        3
  •  1
  •   Community SushiHangover    7 年前

    这是对 John Ballinger 答案是:

    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.net.URLRequestHeader;
    
    var loader:URLLoader = new URLLoader();
    var request:URLRequest = new URLRequest("http://www.mydomain.com/myapp.php");
    var header:URLRequestHeader = new URLRequestHeader("custom-header-name", "value");
    request.requestHeaders.push(header);
    try {
        loader.load(request);
    } catch (error:Error) {
        trace("Unable to load requested document.");
    }
    

    还必须确保修改crossdomain.xml以允许HTTP头,如下所示:

    <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
    <cross-domain-policy>
        <allow-access-from domain="*.mydomain.com" />
        <allow-http-request-headers-from domain="*.mydomain.com" headers="*" />
    </cross-domain-policy>
    
        4
  •  0
  •   John Ballinger    14 年前

    您无法判断它来自闪存,因为闪存实际上使用浏览器来执行请求。

    但是在您的flash请求中,您可以将自己的头添加到HTTP请求中(在flash中您可以很容易地做到这一点)。这样,您就可以看到请求是否来自闪存。