我正在尝试使用ajax请求将html内容添加到外部URL并将其加载到特定的div元素但是我通过执行跨域ajax请求时出错
阻止跨源请求:同源策略禁止读取 远程资源在 http://www.myowndomain.com/embed.php?c=5576b014b210a。 (原因: 缺少CORS标题“Access-Control-Allow-Origin”。
这是必须粘贴在用户(任何域名)的任何博客,论坛或网站中的示例代码:
<script type="text/javascript" src="http://myowndomain.com/embed.js"></script><script type="text/javascript">embed.init(["5576b014b210a", "myembeded"]);embed.myCollage();</script><div id="myembeded"></div>
然后这是embed.js的代码驻留在我的域
var embed = embed || (function(){
var _args = {};
return {
init : function(param) {
_args = param;
},
myCollage : function() {
embed.load_home(_args[0],_args[1]);
},
load_home:function (id,elementId) {
var request = embed.createCORSRequest("get", "http://myowndomain.com/embed.php?c="+id);
if (request){
request.onload = function(){
document.getElementById(elementId).innerHTML = request.responseText;
};
request.send();
}
},
createCORSRequest:function (method, url){
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr){
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined"){
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
xhr = null;
}
return xhr;
}
};
}());
并且embed.php位于我的域
if(isset($_GET['c'])){
echo file_get_contents('http://myowndomain.com/embed/?u='.$_GET['c']);
}
答案 0 :(得分:0)
这是浏览器中实现的功能,可防止您执行本地域上的请求。
如果其他网站具有允许该API的API,则使用其API。否则您无法获取数据。如果它是您的站点,请修改您的Web服务器以通过添加标头信息来启用请求。
这是所有可以通过自己查找错误而得到的信息。
答案 1 :(得分:0)
已经解决了。将此添加到我的embed.js:
header("Access-Control-Allow-Origin: *");
感谢您的想法。