尝试从同一域中的站点获取资源时,Access-Control-Allow-Origin错误?

时间:2011-09-14 22:34:30

标签: javascript ajax cross-domain access-control

我只是想从服务器上的其他网站抓取html并将其打印在当前网站上。这基本上就是我正在做的事情:

// The object
var xmlhttp = new XMLHttpRequest(); 

// When a button is pressed, we get the html
function printJSON(action)
{
    otherURL = "http://www.my.domain.com/other.php?action=" +action;

    xmlhttp.open('GET',otherURL,true);
    xmlhttp.send();
}

// and then print it in this div
xmlhttp.onreadystatechange = function
{
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        $('JSON_output').innerHTML = xmlhttp.responseText;
    }
}

我收到的错误是:

XMLHttpRequest无法加载http://www.my.domain.com/other.php?action=SEARCH。 Access-Control-Allow-Origin不允许原点http://my.domain.com

这看起来很奇怪,因为这是服务器上的一个站点,试图在同一个文件夹中访问另一个站点。我需要在服务器上调整一些东西吗?我需要设置xmlhttp中的属性?

干杯!

1 个答案:

答案 0 :(得分:0)

根据{{​​3}},

http://www.my.domain.comhttp://my.domain.com是两个不同的域名(请注意www)。

如果www.my.domain.com和my.domain.com指向同一个地方,最简单的解决方案是使otherURL相对;以“/other.php?action=”开头;这样,它将始终与您的页面位于同一个域中。

如果没有,请指向同一个地方,有一个更复杂的解决方案,涉及您的服务器输出名为the JavaScript same-origin policy的其他标头; Cross Origin Resource Sharing