Не удалось отправить запрос CORS POST с помощью jQuery

Я пытаюсь отправить запрос POST в отдельный субдомен через ajax. Запрос предварительной проверки (ОПЦИИ) успешно, но следующий запрос XMLHttpRequest возвращает «Происхождение http://app.example.com не разрешено Access-Control-Allow-Origin».

Код на стороне клиента (app.example.com) выглядит следующим образом:

var settings = { url: 'http://api.example.com/auth', type: 'POST', contentType: 'application/json', crossDomain: true, headers: {"X-Requested-With": "XMLHttpRequest"}, username: data.username, success: callback, error: callback }; $.ajax(settings); 

Код на стороне сервера (api.example.com) выглядит так:

 $this->output->set_header('Content-Type: application/json; charset=utf-8'); $this->output->set_header('Access-Control-Allow-Origin: http://app.example.com'); $this->output->set_header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, HEAD, OPTIONS'); $this->output->set_header('Access-Control-Allow-Headers: X-Requested-With, Origin, X-Csrftoken, Content-Type, Accept'); $this->output->set_header('Access-Control-Allow-Credentials: true'); 

Запрос OPTIONS возвращает статус 200. Я надеюсь, что кто-то сможет рассказать мне, что мне не хватает. Благодаря!

Вам нужно либо:

  1. Полностью Access-Control-Allow-Credentials заголовок Access-Control-Allow-Credentials (это не отправит куки-файлы в запрос) или:
  2. Добавьте в свой запрос ajax следующее: xhrFields: { withCredentials: true },

Второй вариант будет включать куки в запросе. См. Здесь для получения дополнительной информации. Отправка учетных данных с междоменными сообщениями?

Сначала вы можете попробовать первый вариант, просто чтобы убедиться, что междоменный запрос работает, а затем добавьте файлы cookie после этого (чтобы облегчить отладку).