将URLLoader与外部URL一起使用时出现“错误#2048:安全沙箱违规”

时间:2014-08-21 17:34:24

标签: actionscript-3 security flex cross-domain flex4.5

我正在Flex(AS3)中创建一个应用程序,我需要从外部URL获取信息。但是在使用URLLoader时会发生错误:

  

“错误#2044:未处理的securityError:.text =错误#2048:   安全沙箱违规“

我的代码:

sUrlListas = "https://www.us8.api.mailchimp.com/2.0/lists/members.json?apikey=XXXXX&id=XXX; 
urlLoader2 = new URLLoader (); 

urlLoader2.load (new URLRequest (sUrlListas)); 

我的跨域名是:

<cross-domain-policy> 
     <site-control permitted-cross-domain-policies = "all" /> 
     <allow-access-from domain = "*" secure = "false" to-ports = "*" /> 
</ cross-domain-policy> 

他们的跨域名是:

<cross-domain-policy> 
     <allow-access-from domain = "*" /> 
</ cross-domain-policy> 

Rodo此应用程序在localhost上。我已经阅读了很多关于跨域问题的内容,但似乎并不是这个问题。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

默认情况下,&#34;安全&#34; flash crossdomain中的属性设置为true,这意味着您无法从HTTP访问HTTPS上的内容。因此,您的swf应该从HTTPS连接到他们的API。

答案 1 :(得分:0)

就我而言,问题是相似的,设置跨域策略也没有帮助我。 因此,我尝试不直接从SWF请求api服务,而是通过Web上的php代理请求。 就像:

private static var agentURL:String = "https://myweb.com/agent.php";
private function sendRequest():void
{
  var service:HTTPService = new HTTPService();
  service.resultFormat = "e4x";
  service.useProxy = false;
  service.method = "POST";
  service.url = agentURL;
  var params:Object = new Object();
  params.myurl = "https://www.us8.api.mailchimp.com/2.0/lists/members.json?apikey=XXXXX&id=XXX";
  service.send(params);
}
/*some listeners for Result and Fault response */

所以下一个代码用于文件 agent.php

<?php
set_time_limit(100);

$url = $_POST['myurl'];

try
{
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

    $result = curl_exec($curl);

    if (curl_errno($curl)) {
        print "CError: " . curl_error($curl); 
    } else { 
        print($result); 
        curl_close($curl); 
    }
}
catch(Exception $e)
{
    print '<message>' . $e->getMessage() . '</message>';
}
finally
{
    curl_close($curl);
}
?>