javascript可以请求没有xdr的托管域吗?
Can javascript requests domain on which is hosted whithout xdr?
我已经制作了。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
扩展。
- ajax请求的顺序总是不同的
- Meteor如何接收HTTP请求
- 有没有一种方法可以防止img get请求使用css或js发生
- 从ajax请求中获取javascript对象
- JSONP请求返回结果,但也触发error_callback
- 在localhost Dev Box上测试JSONP请求的最佳方式
- Ajax请求文档就绪会导致jquery加载缓慢
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 在openshift node js应用程序中获取请求
- 反应路由器弄乱了请求网址
- 在我的情况下,如何进行http请求
- 使用密码对话框Javascript请求帮助
- servlet中的请求对象,而不是从jsp接收参数值
- 否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
- JavaScript代码未正确检查ajax请求
- 将错误控制添加到.when.then和xdr请求
- 任何模拟*synchronous*XDomainRequest(XDR)请求的方法
- 如何在XDR请求中指定数据类型
- javascript可以请求没有xdr的托管域吗?