Проблема с CORS для Ionic + express

0

Я создал приложение, которое получает/извлекает данные из mongo/node + express, который находится в другом домене (например, domain_name).

Код для функции get:

var request = $http({
            method: 'GET',
            url: 'https://domain_name.users.io/categories/list',
            withCredentials: true  /* to get the Cookie value generated at server-side */
        });

На экспресс-стороне добавили следующий код, чтобы избежать проблемы с CORS:

 res.header("Access-Control-Allow-Origin", "*");
 res.header("Access-Control-Allow-Methods","GET,PUT,POST,DELETE,OPTIONS");
 res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
 res.header("Access-Control-Allow-Credentials", "true");

Для вышеизложенного я получаю следующую ошибку:

XMLHttpRequest cannot load https://domain_name.users.io/data/list. A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin 'http://localhost:8100' is therefore not allowed access.

Я проверил API " https://domain_name.users.io/data/list ", и с ним нет проблем, так как я могу видеть данные (при попадании в браузер).

Может кто-то, пожалуйста, помогите мне за то же самое

Теги:
ionic-framework
express

2 ответа

0

Необходимо установить заголовки:

var request = $http({
            method: 'GET',
            url: 'https://domain_name.users.io/categories/list',
           headers:{'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
            withCredentials: true  /* to get the Cookie value generated at server-side */
        });

============== О стороне узла ===============

app.use(function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type, Authorization, Access-Control-Allow-Origin, Access-Control-Allow-Headers');
 next();
});
  • 0
    Добавлены заголовки. Все еще получаю ту же ошибку.
  • 0
    @rohan kangale: я отредактировал свой ответ ......
0

Кроме того, * слишком разрешительный и будет побеждать использование учетных данных. Поэтому используйте https://domain_name.users.io/data/list а не используете *.

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

Подробнее читайте здесь.

  • 0
    Изменен res.header("Access-Control-Allow-Origin", "*"); to res.header("Access-Control-Allow-Origin", "https://domain_name.users.io") Теперь при получении этой ошибки `` XMLHttpRequest не может загрузить domain_name.users.io/data/list . Заголовок «Access-Control-Allow-Origin» содержит несколько значений « имя_домена.users.io , *», но допускается только одно. Поэтому происхождение ' localhost: 8100 ' не разрешено.
  • 0
    Моя ошибка, я думаю, localhost - это версия dev, а domain.com - сервер API. Таким образом, вы хотите, чтобы заголовок Access-Control-Allow-Origin был установлен на localhost: только 8100 , другие значения не добавляются.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню