跨站点XMLHttpRequest

跨站点XMLHttpRequest,第1张

跨站点XMLHttpRequest

some.js能够使用XMLHttpRequest将数据发布到abc.com吗?换句话说,因为我们从那里加载了Javascript,abc.com是隐式受信任的吗?

否,因为脚本已加载到单独的域,所以它无权访问…

如果您信任数据源,那么JSONP也许是更好的选择。JSONP涉及将新的script元素动态添加到页面中,并将SRC设置为另一个域,并在查询字符串中将回调设置为参数。例如:

function getJSON(URL,success){    var ud = 'json'+(Math.random()*100).toString().replace(/./g,'');    window[ud]= function(o){        success&&success(o);    };    document.getElementsByTagName('body')[0].appendChild((function(){        var s = document.createElement('script');        s.type = 'text/javascript';        s.src = URL.replace('callback=?','callback='+ud);        return s;    })());}getJSON('http://YOUR-DOMAIN.com/script.php?dataName=john&dataAge=99&callback=?',function(data){    var success = data.flag === 'successful';    if(success) {        alert('The POST to abc.com WORKED SUCCESSFULLY');    }});

因此,您将需要托管自己的脚本,该脚本可以使用PHP / CURL发布到abc.com域,然后以JSONP格式输出响应

我对PHP不太满意,但是也许是这样的:

<?php        $postURL = $_GET['posturl'];    $postData['name'] = $_GET['dataName'];    $postData['age'] = $_GET['dataAge'];                $postResponse = 'blahblahblah';    $postSuccess = TRUE;            echo $_GET['callback'] . '({';    echo "'flag':' . $postSuccess . ',";    echo "'response':' . $postResponse . '})";?>

因此,您可以控制的服务器将充当客户端和abc.com之间的媒介,您将以JSON格式将响应发送回客户端,以便Javascript可以理解和使用…



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5428030.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存