我使用Cake为我的项目,我发生XML意见,这样我可以与他们进行互动(。)从外部网站。有鉴上需要的网站。

基本上,我想看"http://mycakeapp.com/posts/views/1.xml"从"http://www.example.com"

然而,我得到这个错误时采用google i/o大会的ajax功能: 访问受限制的URI拒绝"的代码:"1012.它似乎从google搜索,也许想他是一个选项。。但它不是原来的蛋糕,因此我宁愿使用xml:(

我已经尝试采用一个框架:它加载了登陆屏幕和后我登录,则载入当前页(例如"http://www.example.com")!尽管该框架源"http://mycakeapp.com/posts/views/1.xml"

有人处理这个问题吗?

更新: 要多一点具体的,我想创建一个书签,与我的网站(建立在Cake),因此url代理的方法不会的工作(但谢谢你的建议)

有帮助吗?

解决方案

JSONP绝对是你在找什么。

也许下页可以帮助你: HTTP:// WWW。 ibm.com/developerworks/xml/library/x-xml2jsonphp/

其他提示

只要使PHP代理脚本。让Ajax请求代理脚本,让您的代理脚本“前进”跨域您的要求,通过使用卷曲,只是有你的代理脚本回声出你从你的卷曲的请求得到响应,你会好到哪里去。

如mmattax所提到的,要做到这一点的最简单的方法是通过使用代理的脚本。

这里的一个脚本我使用调出到另一个域,给它传递一个urlencoded的proxy_url参数。

url_proxy.php     

// Is it a POST or a GET?
$url = ($_POST['proxy_url']) ? $_POST['proxy_url'] : $_GET['proxy_url'];

// Open the Curl session
$session = curl_init($url);

// If it's a POST, put the POST data in the body
if ($_POST['proxy_url']) {
    $postvars = '';
    while ($element = current($_POST)) {
        if (key($_POST) != 'proxy_url') {
            $postvars .= key($_POST).'='.$element.'&';
        }
        next($_POST);
    }
    curl_setopt ($session, CURLOPT_POST, true);
    curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars);
}

// Don't return HTTP headers. Do return the contents of the call
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

// Make the call
$response = curl_exec($session);

// Return the response
if (curl_errno($session)) {
    $error_message = curl_error($session);
    echo 'Error: '.$error_message;
} else {
    echo $response;
}

curl_close($session);
?>

在你的情况,你可能要改变的错误处理位返回XML你的应用程序可以分析的有效位。

我通常把这个在我的根目录,并从JavaScript的东西,如把它叫做:

function showMapLegend(baseURL, layer) {
    var url = 'http://our-map-server/get-a-legend.php?layer='+layer;
    var dt = new Date();
    var proxy = baseURL + '/url_proxy.php?currDate='+dt.getTime()+'&proxy_url=';
    url = proxy + encodeURIComponent(url);

    new Ajax.Request(url, {
        method: 'get',
        onSuccess: function(transport) {
            $('map-legend-img').src = transport.responseText;
            new Effect.Appear('map-legend', {duration: 0.5});
        }
    });
}

JavaScript函数上面用来得到一个简单的URL字符串从我们的地图服务器返回的例子中,我们不关心,如果失败,所以没有onFailure处等,它主要原型,但我敢肯定你的想法这是如何使用代理的脚本。

在基本URL变量传递中,它应包含基地 “ HTTP://服务器/ theappname ” 等URL为自己的应用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top