У меня есть процесс Grunt, который инициирует экземпляр сервера express.js. Это работало абсолютно нормально, пока только сейчас, когда он начал подавать пустую страницу со следующим, появляющимся в журнале ошибок в консоли разработчика в Chrome (последняя версия):
XMLHttpRequest не может загрузить https: // www .example.com / Нет заголовка «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе. Происхождение http: // localhost: 4300 ', следовательно, не допускается.Что мешает мне получить доступ к странице?
Это происходит из-за ошибки CORS. CORS означает совместное использование ресурсов Cross Origin. Говоря простыми словами, эта ошибка возникает, когда мы пытаемся получить доступ к домену / ресурсу из другого домена.
Подробнее об этом читайте здесь: ошибка CORS с jquery
Чтобы исправить это, если у вас есть доступ к другому домену, вам необходимо разрешить Access-Control-Allow-Origin в сервер. Это можно добавить в заголовки. Вы можете включить это для всех запросов / доменов или определенного домена.
Эти ссылки могут помочь
Целевой сервер должен разрешать запрос с кросс-началом. Чтобы разрешить это с помощью экспресс-функции, просто выполните запрос параметров http:
app.options('/url...', function(req, res, next){
res.header('Access-Control-Allow-Origin', "*");
res.header('Access-Control-Allow-Methods', 'POST');
res.header("Access-Control-Allow-Headers", "accept, content-type");
res.header("Access-Control-Max-Age", "1728000");
return res.sendStatus(200);
});
Если вы получаете эту ошибку при разработке расширения для google chrome, просто добавьте -
"permissions": [
"http://www.google.com/"
]
в файл manifest.json. ** Замените Google своим сторонним URL.
Вы должны включить CORS, чтобы заставить его работать.
Как это не упоминается в принятом ответе.
Это не относится к этому точному вопросу, но может помочь другим, которые ищут эту проблему. Это то, что вы можете сделать в своем клиенте, код для предотвращения ошибок CORS в некоторых случаях.Если владелец сервера явно не предотвращает его каким-либо образом - вы можете использовать Простые запросы. Обратите внимание, что «простые запросы» должны удовлетворять нескольким условиям, в том числе разрешать POST, GET и HEAD, а также разрешать только определенные заголовки (здесь вы можете найти все условия).
Если ваш клиентский код не задает затронутые заголовки с фиксированным значением в запросе, то Обратите внимание, что «простые запросы» должны удовлетворять нескольким условиям, в том числе разрешать POST, GET и HEAD как только разрешить некоторые заданные заголовки (здесь вы можете найти все условия). происходит, что некоторые клиенты автоматически устанавливают эти Заголовки с некоторыми «нестандартными» значениями, заставляя сервер не принимать его как простой запрос - что даст вы ошибаетесь в CORS.
Хорошим индикатором для этого сценария может быть ошибка CORS, включая термин preflight.
Простые запросы - это связанный вопрос здесь, в stackoverflow.