javascript跨域GET方法

时间:2015-06-09 10:22:53

标签: javascript php html ajax

我正在尝试使用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']);
}

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

已经解决了。将此添加到我的embed.js:

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

感谢您的想法。