使用Flash进行基本认证

xpe*_*int 6 authentication flash rest http

太不可思议了!Flash程序员熟悉这个例子:

var req:URLRequest = new URLRequest("http://yoursite.com/yourservice.ext");
req.method = URLRequestMethod.POST;
req.data = new URLVariables("name=John+Doe");

var encoder:Base64Encoder = new Base64Encoder();        
encoder.encode("yourusername:yourpassword");

var credsHeader:URLRequestHeader = new URLRequestHeader("Authorization", "Basic " + encoder.toString());
req.requestHeaders.push(credsHeader);

var loader:URLLoader = new URLLoader();
loader.load(req);
Run Code Online (Sandbox Code Playgroud)

好的......太棒了...真的很有效.如您所见,我手动添加标头授权进行基本HTTP身份验证.但是......如果我将请求metod从POST更改为GET,则不会生成标头.

有没有人知道解决方案?1000x thx!

Avi*_*lax 5

令您惊讶的是,您甚至能够通过POST请求处理它。在2007年12月,Flash Player已更新为明确禁止Authorization header。我想他们以后可能会重新允许这样做。但是我对此感到惊讶。编辑:根据@derFunk的评论,事实是实际上随后随后允许了标头,尽管在将其发送到其他域时必须在中明确允许crossdomain.xml

除了Authorization标头的特定问题之外,我非常确定Flash Player只会发送带有POST请求的自定义请求标头。抱歉,我没有为此提供的链接,但是在我公司,我们广泛使用Flash Player来与Restful Web服务一起使用,并且我们必须实现各种变通办法才能使事情正常进行。

最重要的是,Flash Player具有对HTTP的强大支持。实际上,我们的解决方法是通过发送request标头来激活的,该标头X-Crippled-Client: true告诉我们的服务以混乱的方式解释请求并发送响应。屁股上真是痛苦。

抱歉,我不能提供更多帮助……祝您好运!