Что касается предыдущего вопроса, я по-прежнему сталкивается с проблемой, когда 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.
У кого-нибудь есть опыт работы с этим?