ENYO дает мне «не разрешено Access-Control-Allow-Origin» и не будет загружать контент с сервера nodejs - PullRequest
2 голосов
/ 14 января 2012

Я сделал простой привет сервер NODEJS.У меня есть веб-служба enyo, работающая в Chrome, которая пытается получить доступ к серверу NODEJS по адресу http://localhost:3000

Когда вызывается метод onSuccess, данные не загружаются, а в исходном коде отображается следующая ошибка

XMLHttpRequest cannot load http://localhost:3000/. Origin http://localhost:81 is not allowed by Access-Control-Allow-Origin.

Я тестировал сервер nodejs в браузере, он работал нормально.

Я пытался установить флаг --disable-web-security, в chrome, он не работал.

Кто-нибудь знаеткак решить эту проблему?Если NOD.js работает на другом сервере, будет ли он работать?Эта безопасность очень запутанная.Тед

1 Ответ

6 голосов
/ 14 января 2012

В целях безопасности браузеры ограничивают запросы, которые скрипт может выполнять через XMLHttpRequest.

Ваши запросы будут успешными только в следующих 2 случаях:

  1. Источник URIзагрузка вашего скрипта совпадает с источником страницы, на которой выполняется скрипт (localhost: 81 и localhost: 3000 - это один и тот же хост, но разные источники);
  2. или, если ваш браузер поддерживает это,сервер запрашиваемой страницы содержит заголовок Access-Control-Allow-Origin, который явно разрешает страницам, обслуживаемым из рассматриваемого источника (или страницам, полученным из всех источников), отправлять ему запросы XMLHttp.Попробуйте добавить заголовок Accesss-Control-Allow-Origin к тому, что генерирует ответ в коде вашего узла, добавив заголовок в некоторый код, который выглядит следующим образом:
    response.writeHead(200, {
                             'Content-Type': 'text/plain',
                             'Access-Control-Allow-Origin' : 'http://localhost:81'
    
                             //allow anything by replacing the above with
                             //'Access-Control-Allow-Origin' : '*'
    
    });
    
...