ENYO дает мне "не разрешено Access-Control-Allow-Origin" и не будет загружать контент с сервера nodejs

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

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

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

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

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

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

1 ответ

Решение

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

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

  1. Источник URI, который загружает ваш скрипт, совпадает с источником страницы, на которой выполняется сценарий (localhost:81 и localhost:3000 - это один и тот же хост, но разные источники);
  2. или, если ваш браузер поддерживает это, сервер запрашиваемой страницы содержит заголовок Access-Control-Allow-Origin, который явно разрешает страницам, обслуживаемым из рассматриваемого источника (или страницам, обслуживаемым из всех источников), отправлять ему запросы XMLHttpRequest.

Попробуйте добавить заголовок 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' : '*'

});
Другие вопросы по тегам