使用Flash进行基本身份验证

使用Flash进行基本身份验证,flash,http,authentication,rest,Flash,Http,Authentication,Rest,这简直难以置信!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.en

这简直难以置信!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);
好的。。。伟大的那真的管用。如您所见,我手动为基本HTTP身份验证添加了头授权。但是如果我将requestmetod从POST更改为GET,则不会生成头

有人知道解决办法吗?
1000倍thx

我很惊讶你居然能通过
POST
请求让它工作。2007年12月,Flash Player被更新为明确禁止
授权标题
。我想他们有可能已经允许了。但我会对此感到惊讶编辑:根据@derFunk的评论,事实上,头随后被重新允许,尽管将其发送到不同的域时,必须在
crossdomain.xml
中明确允许

除了
Authorization
头的具体问题之外,我非常确定flashplayer只会发送带有
POST
请求的定制请求头。很抱歉,我没有这方面的链接,但在我的公司,我们广泛使用flashplayer来处理restfulweb服务,我们必须实施各种变通方法才能使事情顺利进行

总之,Flash Player对HTTP的支持非常糟糕。事实上,我们的一套解决方案是通过发送请求头
X-跛足客户端:true
激活的,它告诉我们的服务以错误的方式解释请求并发送响应。这真是个麻烦事


对不起,我帮不上忙了…祝你好运

@Flax:是的,我非常同意使用HTTP头的flash安全性。但还有一种方法可以做到这一点,但这需要一些工作。尝试使用Socket而不是URLLoader,因为Socket没有这些限制。所以,对于HTTP请求,打开一个到服务器端口80()的套接字。连接到服务器后,立即发送所有http请求头。然后在SocketDataEvent上,解析数据并读取(或丢弃)响应头,然后继续处理数据

您也可以通过GET方法发送头,除非您在独立Flash Player调试器上测试它(不要在simple上测试)v.11.4.402.265。如果您在浏览器中打开本地swf,它也可以正常工作。

所以这是非常旧的,但它是在我搜索将Parse.com与Flash Player结合使用的方法时出现的

我很困惑这是否真的有效,但要让Flash在get命令中发送标题,只需将其设置为POST,但要运行覆盖

req.requestHeaders.push(new URLRequestHeader("X-HTTP-Method-Override", URLRequestMethod.GET));

我试着认为这是疯狂的,不可能工作,但它真的

我发现了这个:是的。。。我做了这个。。。但是现在我遇到了跨域安全性的问题:)。套接字将对非HTTP服务器(如聊天服务器)起作用,在聊天服务器中,您可以手动使用跨域(示例:)满足flash的要求。在连接套接字之前,您可以在此处使用Security.loadPolicyFile(“)。有关授权标头的更多详细信息,请参见此处:从Adobe Flash Player 9.0.115.0开始,授权标头被添加到HTTP标头的黑名单中,并且仅在此版本中被Flash Player阻止。对于9.0.115.0之后的Flash Player版本,授权标头不会被阻止,但目标域需要一个crossdomain.xml文件来指定允许使用授权标头(如果它与承载SWF文件的域不同)。”