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 случаях:
- Источник URI, который загружает ваш скрипт, совпадает с источником страницы, на которой выполняется сценарий (localhost:81 и localhost:3000 - это один и тот же хост, но разные источники);
- или, если ваш браузер поддерживает это, сервер запрашиваемой страницы содержит заголовок 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' : '*'
});