栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

跨站点XMLHttpRequest

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

跨站点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可以理解和使用…



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452506.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号