javascript可以请求承载xdr的域吗?
我制作了一个.js程序,它可以在我自己的页面上制作baners(每个页面都发布在不同的服务器上)。我正在使用javascript可以请求承载xdr的域吗?,javascript,ajax,jquery,Javascript,Ajax,Jquery,我制作了一个.js程序,它可以在我自己的页面上制作baners(每个页面都发布在不同的服务器上)。我正在使用运行它。 问题是,我的脚本向主服务器(承载带有脚本的文件)请求一些变量,然后我收到一条消息: 访问控制不允许原点允许原点 我无法在我使用的服务器上启用访问控制允许源代码,但这不是解决它的某种方法吗?我的意思是,此脚本托管在请求的服务器上 -------------SERVER1--------------server-first.com--------------- script.js文件
运行它。
问题是,我的脚本向主服务器(承载带有脚本的文件)请求一些变量,然后我收到一条消息:
访问控制不允许原点允许原点
我无法在我使用的服务器上启用访问控制允许源代码,但这不是解决它的某种方法吗?我的意思是,此脚本托管在请求的服务器上
-------------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---------------
如果域名不相同,您不能从一个站点向另一个站点发出请求。您的下一个求助渠道可能是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);
现在,您已经创建了另一个脚本文件,设置了源(您可以在其中添加所需的任何查询数据),并将其附加到第一个脚本元素所属的任何元素(通常为head或body)。
当该脚本文件加载时,它将调用doSomething()
,使用您在其中放置的任何内容
因此,为了从逻辑上得出结论,您可以将服务器设置为将.js
扩展名视为PHP(或者有选择地,如果文件实际上不存在),或者您可以从JavaScript方面请求“//otherserver.com/getdata.PHP”
。然后,您就可以从php端访问您需要做的任何事情。只需回显echo“doSomething(“…”);”代码>
您可以在查询字符串中接受一个“callback”参数,这样您就可以告诉文件需要在JS页面上启动的函数的名称
此外,如果要使用.php
扩展名,则应确保将内容类型
标题设置为javascript,而不是文本或html。通常不允许使用不同的域,但有办法做到这一点。您可能需要在服务器上查看HTTP响应头的设置,以便进行更新。如前所述,如果你不能设置它,那么你可能运气不佳。为您提供了一些很好的参考XDR=。它与AJAX有什么关系?
// 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);