Задать вопрос
miraage
@miraage
Старый прогер

Crossdomain ajax request — в чем может быть проблема?

С чем имеем дело:
- Angular на фронтенде (если быть точнее, то Restangular, но, он юзает Angular.$http)
- Yii на бэкенде (на самом деле, это не так важно)

Пытаюсь с manager.rfx.dev отправить запрос на api.rfx.dev. (локальные домены)

Angular приправляю следующими заголовками:
RestangularProvider.setDefaultHeaders({
    'Content-Type': 'application/json',
    'X-Requested-With': 'XMLHttpRequest'
});
RestangularProvider.setDefaultHttpFields({
    'withCredentials': true
});


На бэкенде отправляю такие заголовки:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
header('Access-Control-Request-Headers: Accept, X-Requested-With');
header('Access-Control-Allow-Credentials: true');


Получаю:

OPTIONS api.rfx.dev/contexts 403 (Forbidden) angular.min.js:73
OPTIONS api.rfx.dev/contexts No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'manager.rfx.dev' is therefore not allowed access. angular.min.js:73
XMLHttpRequest cannot load api.rfx.dev/contexts. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'manager.rfx.dev' is therefore not allowed access.


На момент написания вопроса отуплил, что посылается OPTIONS. Надо ли его добавлять в Allow-Methods? Или же он считается, как GET?
С другой стороны, заголовок Access-Control-Allow-Origin я посылаю...

Собственно, ЧЯДНТ?
  • Вопрос задан
  • 8253 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
egor_nullptr
@egor_nullptr
Для кросс-доменных запросов с withCredentials: true заголовок Access-Control-Allow-Origin должен быть установлен к конкретное значение, звездочка недопустима.
Вместо header('Access-Control-Allow-Origin: *'); попробуйте
header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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