2015-06-09 33 views
-2

我试图使用Ajax请求得到一个HTML内容到外部URL,并将其加载到特定的div元素,但我做跨域​​Ajax请求JavaScript的跨域GET方法

有错误跨源请求被阻止:相同来源策略不允许读取 远程资源 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

已经解决了。通过添加到我的embed.js:

header("Access-Control-Allow-Origin: *"); 

感谢您的想法。

0

这是在浏览器中实现的一项功能,可防止您执行不在本地域上的请求。

如果其他网站有允许的API,则使用他们的API。否则,你无法获得数据。如果它是您的网站,请修改您的Web服务器以通过添加标题信息来启用请求。

这是通过自己查找错误可能得到的所有信息。

+0

服务器的哪个部分?我可以将它添加到我的PHP代码?你可以给我样本标题信息吗?谢谢 – Cris