Access-Control-Allow-Origin ошибка при попытке получить ресурсы с сайта в том же домене? - PullRequest
0 голосов
/ 15 сентября 2011

Я просто пытаюсь получить 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. Источник http://my.domain.com не разрешен Access-Control-Allow-Origin.

Что кажется странным, потому что это один сайт на сервере, пытающийся получить доступ к другому сайту прямо в той же папке. Что-то мне нужно настроить на моем сервере? Атрибут в xmlhttp мне нужно установить?

Ура!

1 Ответ

0 голосов
/ 15 сентября 2011

http://www.my.domain.com и http://my.domain.com - это два разных домена (обратите внимание на www) в соответствии с политикой единого происхождения JavaScript .

Если www.my.domain.com и my.domain.com указывают на одно и то же место, самое простое решение - сделать otherURL относительным;запустите его с "/other.php?action=";таким образом, он всегда будет находиться в том же домене, что и ваша страница.

Если они этого не делают, укажите на одно и то же место, есть гораздо более сложное решение, включающее в себя вывод на сервер дополнительных заголовков под названием CrossОбмен исходными ресурсами ; вот обзор .

...