Контроль доступа - разрешить управление в web3 [duplicate]

[D0] TL; др; О той же политике происхождения

У меня есть процесс Grunt, который инициирует экземпляр сервера express.js. Это работало абсолютно нормально, пока только сейчас, когда он начал подавать пустую страницу со следующим, появляющимся в журнале ошибок в консоли разработчика в Chrome (последняя версия):

XMLHttpRequest не может загрузить https: // www .example.com / Нет заголовка «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе. Происхождение http: // localhost: 4300 ', следовательно, не допускается.

Что мешает мне получить доступ к странице?

48
задан 6 August 2018 в 19:20

5 ответов

Это происходит из-за ошибки CORS. CORS означает совместное использование ресурсов Cross Origin. Говоря простыми словами, эта ошибка возникает, когда мы пытаемся получить доступ к домену / ресурсу из другого домена.

Подробнее об этом читайте здесь: ошибка CORS с jquery

Чтобы исправить это, если у вас есть доступ к другому домену, вам необходимо разрешить Access-Control-Allow-Origin в сервер. Это можно добавить в заголовки. Вы можете включить это для всех запросов / доменов или определенного домена.

Ошибка CORS с jquery

Эти ссылки могут помочь

2
ответ дан 15 August 2018 в 15:40

Целевой сервер должен разрешать запрос с кросс-началом. Чтобы разрешить это с помощью экспресс-функции, просто выполните запрос параметров 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);
});
2
ответ дан 15 August 2018 в 15:40

Если вы получаете эту ошибку при разработке расширения для google chrome, просто добавьте -

  "permissions": [
"http://www.google.com/"

]

в файл manifest.json. ** Замените Google своим сторонним URL.

-3
ответ дан 15 August 2018 в 15:40

Вы должны включить CORS, чтобы заставить его работать.

-2
ответ дан 15 August 2018 в 15:40

Как это не упоминается в принятом ответе.

Это не относится к этому точному вопросу, но может помочь другим, которые ищут эту проблему. Это то, что вы можете сделать в своем клиенте, код для предотвращения ошибок CORS в некоторых случаях.

Если владелец сервера явно не предотвращает его каким-либо образом - вы можете использовать Простые запросы. Обратите внимание, что «простые запросы» должны удовлетворять нескольким условиям, в том числе разрешать POST, GET и HEAD, а также разрешать только определенные заголовки (здесь вы можете найти все условия).

Если ваш клиентский код не задает затронутые заголовки с фиксированным значением в запросе, то Обратите внимание, что «простые запросы» должны удовлетворять нескольким условиям, в том числе разрешать POST, GET и HEAD как только разрешить некоторые заданные заголовки (здесь вы можете найти все условия). происходит, что некоторые клиенты автоматически устанавливают эти Заголовки с некоторыми «нестандартными» значениями, заставляя сервер не принимать его как простой запрос - что даст вы ошибаетесь в CORS.

Хорошим индикатором для этого сценария может быть ошибка CORS, включая термин preflight.

Простые запросы - это связанный вопрос здесь, в stackoverflow.

2
ответ дан 15 August 2018 в 15:40

Другие вопросы по тегам:

Похожие вопросы: