将URLLoader与外部URL一起使用时出现“错误#2048:安全沙箱违规”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将URLLoader与外部URL一起使用时出现“错误#2048:安全沙箱违规”相关的知识,希望对你有一定的参考价值。
我正在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上。我已经阅读了很多关于跨域问题的内容,但似乎并不是这个问题。
有人可以帮忙吗?
答案
默认情况下,flash crossdomain中的“secure”属性设置为true,这意味着您无法从HTTP访问HTTPS上的内容。因此,您的swf应该从HTTPS连接到他们的API。
另一答案
在我的情况下,问题类似,设置跨域策略也没有帮助我。所以我尝试直接从SWF请求api服务,但是通过我的网络上的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);
}
?>
以上是关于将URLLoader与外部URL一起使用时出现“错误#2048:安全沙箱违规”的主要内容,如果未能解决你的问题,请参考以下文章
将 Typescript 与 React-Redux 一起使用时出现类型错误