javascript可以请求没有xdr的托管域吗?

Can javascript requests domain on which is hosted whithout xdr?

本文关键字:xdr 请求 javascript      更新时间:2023-09-26

我已经制作了。js程序,它在我自己的页面上制作横幅(每个页面都发布在不同的服务器上)。我用<script src="sample.com"></script>来运行它。问题是,我的脚本请求主服务器(在其中的文件与脚本托管)的一些变量,然后我得到消息:

Origin http://php.kotarbki.pl不被Access-Control-Allow-Origin允许。

我不能在我使用的服务器上打开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>

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

您的下一个求助对象很可能是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头设置为javascript,而不是文本或html,如果你要使用.php扩展。