可以javascript请求在xdr上托管的域吗?

时间:2013-03-13 23:35:29

标签: javascript ajax jquery

我制作了.js程序,它在我拥有的页面上制作了baners(每个页面都发布在不同的服务器上)。我正在使用<script src="sample.com"></script>来运行它。 问题是,我的脚本请求主服务器(托管脚本的文件)用于某些变量,而不是我收到消息:

  Access-Control-Allow-Origin不允许

Origin http://php.kotarbki.pl

我无法在我使用的服务器上启用Access-Control-Allow-Origin,但是它不是一种解决它的方法,我的意思是这个脚本托管在请求的服务器上!

------------- SERVER1 --------------- server-first.com ------------- -

script.js文件:

var xmlhttp;
if (window.XMLHttpRequest)    {
   xmlhttp=new XMLHttpRequest();
}else{
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
   if (xmlhttp.readyState==4 && xmlhttp.status==200){
      return xmlhttp.responseText.split("#");
   }
}
xmlhttp.open("GET","http://server-first.com/page.php?action=getVariables",true);
xmlhttp.send();

page.php文件:

if($_GET['action']=='getVariables'){
    echo $var1 . "#" . $var2;
}

------------- SERVER2 --------------- second-server.com ------------- -

<html>
<script src="server-first.com/script.js"></script>
</html>

2 个答案:

答案 0 :(得分:0)

如果域名不相同,则无法从一个站点向另一个站点发出请求。

答案 1 :(得分:0)

你的下一个办法很可能是JSONP。

我通常不使用它,但这就是想法:

// dosomething.js -- script that's already on page
var doSomething = function (obj) {
    doStuff(obj);
};


// getdata.js script that's on another server
doSomething({ name : "...", id : 1234 });


var script = document.createElement("script"),
    parent = document.getElementsByTagName("script")[0].parentNode,
    src = "//otherserver.com/getdata.js";

script.src = src;
parent.appendChild(script);

您现在已经创建了另一个脚本文件,设置源(您可以在其中添加所需的任何查询数据)并将其附加到第一个脚本元素是子元素(通常是头部或主体)的任何元素。 当该脚本文件加载时,它将使用你放入的任何内容调用doSomething()

因此,为了得到合乎逻辑的结论,您可以将服务器设置为将.js扩展名视为PHP(或者有选择地,如果文件实际上不存在),或者您可以从JavaScript方面询问,"//otherserver.com/getdata.php"。然后,您可以从php端访问您需要做的任何事情。只需回复echo "doSomething(" . ... .");";

您可以在查询字符串中接受“callback”参数,以便您可以告诉文件需要在JS页面上触发函数的名称。

此外,如果您要使用content-type扩展程序,则应确保将.php标头设置为javascript,而不是text或html。