По умолчанию RESTHeart всегда отправляет заголовки CORS.Если вы просто запустите его с docker-compose up
, а затем отправите запрос http OPTIONS
, вы должны убедиться, что он отвечает правильно.
Например, ниже я сначала создал базу данных "db" и коллекцию "coll"и затем я использую httpie клиент (но вы можете использовать curl или любой API-интерфейс):
http -a 'admin:changeit' OPTIONS http://localhost:8080/db/coll
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Accept, Accept-Encoding, Authorization, Content-Length, Content-Type, Host, If-Match, Origin, X-Requested-With, User-Agent, No-Auth-Challenge
Access-Control-Allow-Methods: GET, PUT, POST, PATCH, DELETE, OPTIONS
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Location, ETag, Auth-Token, Auth-Token-Valid-Until, Auth-Token-Location, X-Powered-By
Connection: keep-alive
Content-Length: 0
Date: Tue, 12 Feb 2019 14:39:18 GMT
X-Powered-By: restheart.org
Вы видите точно такие же заголовки?
Ваше сообщение об ошибке «Ключ поля заголовка запроса не разрешен Access-Control-Allow-Headers в ответе перед полетом»: не могли бы вы проверить консоль Javascript в браузере и посмотреть, не получит ли она какую-либо ошибку после отправки запроса OPTIONS
?
Кроме того, помните, что при выполнении POST запрос должен содержать заголовок Accept для application / json
Accept: application/json
Например, ниже приведен полный запрос, который httpie отправляет в RESTHeart при публикации простого JSONобъект для коллекции "coll":
http -v -a 'admin:changeit' POST http://localhost:8080/db/coll name='RESTHeart'
POST /db/coll HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Authorization: Basic YWRtaW46Y2hhbmdlaXQ=
Connection: keep-alive
Content-Length: 21
Content-Type: application/json
Host: localhost:8080
User-Agent: HTTPie/0.9.9
{
"name": "RESTHeart"
}
Вы также можете привязать логи RESTHeart к:
docker logs -f restheart