Angular, тип контента не отправляется с $http Часть 2

Что касается предыдущего вопроса, я по-прежнему сталкивается с проблемой, когда Content-Type, похоже, не отправляется в предварительный запрос, с включенными OPTIONS на сервере и данными, заполняемыми как объект json. Я прыгал между синтаксисом HAL JSON и обычным JSON с тем же результатом.

Обычный json:

return $http({
    url: 'http://ait.local/entity/node?_format=json',
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    data: task
});

Хэл Джейсон:

return $http({
    url: 'http://ait.local/entity/node?_format=hal_json',
    method: 'POST',
    headers: {
        'Content-Type': 'application/hal+json'
    },
    data: task
});

Проверка заголовков как в Chrome, так и в FF не показывает Content-Type в заголовках запроса. Вот ответ:

XMLHttpRequest не может загрузить http://ait.local/entity/node?_format=json . Ответ на предварительный запрос не проходит проверку управления доступом: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Таким образом, доступ к источнику 'http://localhost:8080' запрещен.

Я уже убедился, что CORS включен на сервере в .htaccess:

<IfModule mod_headers.c>
  # Disable content sniffing, since it's an attack vector.
  Header always set X-Content-Type-Options nosniff

  Header set Access-Control-Allow-Origin "http://localhost:8080"
  Header set Access-Control-Allow-Methods "POST, GET, OPTIONS, PATCH, DELETE"
  Header set Access-Control-Allow-Headers "Origin, Authorization, Accept, Content-Type, X-Requested-With"

  RewriteCond %{REQUEST_METHOD} OPTIONS
  RewriteRule .* / [R=200,L]
</IfModule>

Кроме того, если я проверю это в Postman, HAL JSON получит ответ 201 Created и создаст объект. Это наводит меня на мысль, что проблема где-то в Angular. Однако даже выполнение того же запроса с помощью jQuery приводит к той же ошибке. Если я консольно регистрирую данные задачи, это действительно объект JSON.

У кого-нибудь есть опыт работы с этим?


person AlxVallejo    schedule 20.01.2016    source источник
comment
Так что просто догадка, но имеет ли это какое-либо отношение к тому факту, что я запускаю свое приложение Angular через node.js на порту 8080?   -  person AlxVallejo    schedule 20.01.2016