我制作了.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>
答案 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。