首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用URLLoader和外部Url时“错误#2048:安全沙箱违规”

使用URLLoader和外部Url时“错误#2048:安全沙箱违规”
EN

Stack Overflow用户
提问于 2014-08-21 17:34:23
回答 2查看 2.3K关注 0票数 1

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

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

我的代码:

代码语言:javascript
运行
复制
sUrlListas = "https://www.us8.api.mailchimp.com/2.0/lists/members.json?apikey=XXXXX&id=XXX; 
urlLoader2 = new URLLoader (); 

urlLoader2.load (new URLRequest (sUrlListas)); 

我的跨域是:

代码语言:javascript
运行
复制
<cross-domain-policy> 
     <site-control permitted-cross-domain-policies = "all" /> 
     <allow-access-from domain = "*" secure = "false" to-ports = "*" /> 
</ cross-domain-policy> 

跨域它们是:

代码语言:javascript
运行
复制
<cross-domain-policy> 
     <allow-access-from domain = "*" /> 
</ cross-domain-policy> 

在本地主机上执行此应用程序。我读过很多关于跨域be问题的文章,但似乎不是这个问题。

有人能帮忙吗?

EN

回答 2

Stack Overflow用户

发布于 2014-08-23 13:45:06

默认情况下,flash交叉域中的"secure“属性设置为true,这意味着您无法从HTTP访问HTTPS上的内容。因此,您的swf应该从HTTPS连接到它们的API。

票数 1
EN

Stack Overflow用户

发布于 2018-09-14 07:54:30

在我的例子中,问题是相似的,设置跨域策略对我也没有帮助。因此,我试图请求api服务不是直接从SWF,而是通过我的网站上的php代理。就像:

代码语言:javascript
运行
复制
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的

代码语言:javascript
运行
复制
<?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);
}
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25432487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档